当用户单击“呼叫和短信”按钮时,我正在处理“呼叫和短信意图”。
问题:
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和运行时中添加权限。
答案 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);