您的位置:首页 > 其它

自定义发送短信,打电话

2016-07-15 20:33 134 查看
1.自定义发送短信

发送短信,需要一个权限,就是android.permission.SEND_SMS.

所以,首先在AndroidMenifest文件里加上这个权限:

uses-permission android:name=”android.permission.SEND_SMS”

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

显示的提醒用户是否允许apk使用短信发送功能

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, -1);

phoneNumber = (EditText) findViewById(R.id.phone_number);

smsText = (EditText) findViewById(R.id.sms_text);

sendButton = (Button) findViewById(R.id.send_sms);

systemBtn = (Button) findViewById(R.id.main_system);

systemBtnCall = (Button) findViewById(R.id.main_systemCall);

添加点击事件

sendButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

1.1.获取短信管理者

SmsManager manager = SmsManager.getDefault();

1.2.发送短信

注意如果短信的内容长度长过70,那么70以后的文本会被截取掉,所以需要对文本进行处理

拿到短信的内容
String text = smsText.getText().toString();
调用短信管理者的方法对短信进行分割
List<String> list = manager.divideMessage(text);
遍历List里面的
for (String sms_text:list){
发送短信
**发送短信的参数说明:**
destinationAddress:目标电话号码
scAddress:短信中心号码,测试可以不填
text: 短信内容
sentIntent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号
--> 后续处理   即,这个意图包装了短信发送状态的信息
deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收
已经发送成功,但是对方没有收到)。
manager.sendTextMessage(phoneNumber.getText().toString(), null,
smsText.getText().toString(), null, null);
}
Toast.makeText(MainActivity.this, "发送成功",LENGTH_SHORT).show();
}
});
调用系统发短息
systemBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri smsToUri = Uri.parse("smsto:10000");
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
intent.putExtra("sms_body", smsText.getText().toString());

startActivity(intent);
}
});


拨打电话的话,需要一个权限,就是android.permission.CALL_PHONE.

所以,首先在AndroidMenifest文件里加上这个权限:

uses-permission android:name=”android.permission.CALL_PHONE”

第一种方式:

Intent intent = new Intent(Intent.ACTION_DIAL);

Uri data = Uri.parse(“tel:” + “135xxxxxxxx”);

intent.setData(data);

startActivity(intent);

这种方式的特点就是,去到了拨号界面,但是实际的拨号是由用户点击实现的。

第二种方式:

Intent intent = new Intent();

intent.setAction(“android.intent.action.CALL”);

intent.setData(Uri.parse(“tel:”+phoneNumber.getText().toString()));

startActivity(intent);

这种方式的特点就是,直接拨打了你所输入的号码,所以这种方式对于用户没有直接的提示效果,Android

推荐使用第一种方式,如果是第二种的话,建议在之前加一个提示,是否拨打号码,然后确定后再拨打。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: