- 记录安卓实现直接打电话以及直接发短信以及相应的权限申请
- 相应的Action
(1)String action = Intent.ACTION_DIAL;
实现跳转到拨号界面
(2)Intent intent = new Intent(Intent.ACTION_SENDTO);
跳转到信息界面
(3)String action = Intent.ACTION_CALL;
直接拨打电话(需要权限)
<!--打电话的权限-->
<uses-permission android:name="android.permission.CALL_PHONE"/>
(4)
/ *1.得到SmsManager对象
* 2.发送文本信息
* */
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(et_num.getText().toString(),null,et_sms.getText().toString(),
null,null);//设置为空表示不关心回执
短信权限申请:
<!--发短信的权限-->
<uses-permission android:name="android.permission.SEND_SMS"/>
记录权限申请的坑,有时明明在AndroidManifest
文件中申请了权限在使用时仍然报错。原因是手机没有给授权相应的权限,需要在应用设置里手动授权。
记录整体代码:
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
private EditText et_num;
private EditText et_sms;
private Button bt_num;
private Button bt_sms;
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击事件
if (v == bt_num) {
//隐式启动
//拨号界面的action,传入Intent中
/*String action = "android.intent.action.DIAL";*/
String action = Intent.ACTION_DIAL;
Intent intent = new Intent(action);
//携带数据
String number = et_num.getText().toString();
intent.setData(Uri.parse("tel:" + number));
//start
startActivity(intent);
} else if (v == bt_sms) {
/*
点击发短信进入短信编辑的界面(隐式)
* */
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + et_num.getText().toString()))
.putExtra("sms_body", et_sms.getText().toString());
startActivity(intent);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_num = (EditText) findViewById(R.id.et_num);
et_sms = (EditText) findViewById(R.id.et_sms);
bt_num = (Button) findViewById(R.id.bt_num);
bt_sms = (Button) findViewById(R.id.bt_sms);
//跳转到拨号界面(隐式启动)
bt_num.setOnClickListener(onClickListener);
bt_sms.setOnClickListener(onClickListener);
//直接打电话
bt_num.setOnLongClickListener(this);
bt_sms.setOnLongClickListener(this);
}
@Override
public boolean onLongClick(View v) {
//长按
if (v == bt_num) {
//长按直接拨打电话
//需要申请权限
String action = Intent.ACTION_CALL;
Intent intent = new Intent(action);
//携带数据
String number = et_num.getText().toString();
intent.setData(Uri.parse("tel:" + number));
//start
startActivity(intent);
} else if (v == bt_sms) {
/*长按直接发送短信
*1.得到SmsManager对象
* 2.发送文本信息
* */
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(et_num.getText().toString(),null,et_sms.getText().toString(),
null,null);//设置为空表示不关心回执
}
return false;
}
}