实现电话程序
方法一
使用系统自带的拨号程序拨打电话(不需要任何权限)
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL); //拨号
intent.setData(Uri.parse("tel:12345678910")); //意图数据
/*
//显示用户数据的通用方式,根据用户的数据类型打开相应的Activity
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("tel:12345678910"));*/
startActivity(intent);
方法二
立即拨打指定电话(需要申请拨号权限)
不调用系统程序,单击本程序的按钮即可拨打
-
清单文件中,注册电话权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
-
Activity中权限的动态监测
//ContextCompat.checkSelfPermission(Context,permission); ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED
-
权限的动态申请
//ActivityCompat.requestPermissions(Activity,String[] permission, requestCode); ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
-
权限已有,意图Intent
private void dail(){ Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+numberText.getText())); startActivity(intent); }
实现短信程序
短信——通过SMS中心进行转发
- SMS (Short Message Service,短信息服务) 是一种存储和转发服务
- 短信管理器类android.telephony.SmsManager
方法一
使用系统自带的短信程序(不需要任何权限)
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SENDTO);//意图动作
//intent.setAction(Intent.ACTION_VIEW);
intent.setDdata(Uri.parse("sms:12345678910?body=手机短信测试"));//意图数据=>发送短信
//另一种写法
/*
Uri uri = Uri.parse("smsto:12345678910");
Intent intent = new Intent(Intent.ACTION_SETNDTO, uri);
intent.putExtra("sms_body", "手机短信测试");*/
startActivity(intent);
方法二
使用短信管理器立即发送短信(需要申请权限)
用户在本程序中输入短信内容、电话号码,点击发送按钮就可发送
-
清单文件中,申请权限
<uses-permission android:name="android.permission. SEND_SMS“/> <uses-permission android:name="android.permission. READ_PHONE_STATE"/>
Activity组件进行权限的动态监测、动态申请
-
权限申请成功
public void onClick(View v) { EditText tel = findViewById(R.id.tel); EditText message = findViewById(R.id.message); //获得短信管理器 SmsManager smsManager = SmsManager.getDefault(); //短信内容分段 List<String> list = smsManager.divideMessage(message.toString()); //分段发送 for(String sms : list) { //方法参数1为手机号,参数3为短信内容,共5个参数 smsManager.sendTextMessage(tel.toString, null, sms, null, null); } } /* smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent) destinationAddress: 收件人号码 scAddress: 短信中心服务号码, 这里设置为null text: 发送内容 sentIntent: 发送短信结果状态信号(是否成功发送),new 一个Intent , 操作系统接收到信号后将广播这个Intent.此过程为异步. deliveryIntent: 对方接收状态信号(是否已成功接收). */