Android:要通话和发送短信,是否需要添加权限?

时间:2018-09-11 10:56:37

标签: android android-intent sms call

当用户单击“呼叫和短信”按钮时,我正在处理“呼叫和短信意图”。

问题:

1)是否需要在AndroidManifest.xml文件中添加权限?

2)还需要对运行时权限进行编码吗?

我为通话意图编写代码如下:

 Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:" + driverMobileNo));
                startActivity(intent);

短信意图

Intent it = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+ driverMobileNo));
            it.putExtra("sms_body", "The SMS text");
            startActivity(it);

以上代码可以正常运行(在Oreo 8.0版本中进行测试),而无需在AndroidManifest.xml和运行时中添加权限。

2 个答案:

答案 0 :(得分:3)

您可以在没有任何许可的情况下使用此代码:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));     
intent.putExtra("sms_body", message); 
startActivity(intent);

对于通话,您可以在没有任何许可的情况下使用它:

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:phoneNumber"))
startActivity(intent);

您不需要任何许可,因为用户实际上是在拨打电话,您只需将他重定向到电话应用程序即可。如果要直接通过应用程序拨打电话,则必须使用ACTION_CALL而不是ACTION_DIAL并添加权限:

<uses-permission android:name="android.permission.CALL_PHONE" />

希望有帮助!

答案 1 :(得分:0)

您可以写短信

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setData(Uri.parse("smsto:"+phoneNumber)); // This ensures only SMS apps respond
intent.putExtra("sms_body", message);
startActivity(intent);

对于通话,您可以使用此意图

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);