自定义发送短信,打电话

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 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);
        }
    });
  1. 拨打电话的话,需要一个权限,就是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
    推荐使用第一种方式,如果是第二种的话,建议在之前加一个提示,是否拨打号码,然后确定后再拨打。

你可能感兴趣的:(短信)