为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中使用意图打电话?

如何在Android中使用意图打电话?

FFIVE 2019-07-26 19:15:46
如何在Android中使用意图打电话?我正在使用下面的代码在Android中打电话,但是它给了我安全例外,请帮助。 posted_by = "111-333-222-4";  String uri = "tel:" + posted_by.trim() ;  Intent intent = new Intent(Intent.ACTION_CALL);  intent.setData(Uri.parse(uri));  startActivity(intent);权限 <uses-permission android:name="android.permission.CALL_PHONE" />例外11-25 14:47:01.661: ERROR/AndroidRuntime(302): Uncaught handler: thread main exiting due to uncaught exception11-25 14:47:01.681: ERROR/AndroidRuntime(302): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:111-333-222-4 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{43d32508 302:com.Finditnear/10026} (pid=302, uid=10026) requires android.permission.CALL_PHONE11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.os.Parcel.readException(Parcel.java:1218)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.os.Parcel.readException(Parcel.java:1206)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1214)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.Activity.startActivityForResult(Activity.java:2749)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.Activity.startActivity(Activity.java:2855)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at com.Finditnear.PostDetail$2$1$1$1.onClick(PostDetail.java:604)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:884)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.widget.ListView.performItemClick(ListView.java:3285)
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你可以用Intent.ACTION_DIAL而不是Intent.ACTION_CALL..这显示了已输入号码的拨号程序,但允许用户决定是否实际拨打电话。ACTION_DIAL不需要CALL_PHONE许可。



查看完整回答
反对 回复 2019-07-28
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

更优雅的选择:

String phone = "+34666777888";Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));startActivity(intent);


查看完整回答
反对 回复 2019-07-28
  • 3 回答
  • 0 关注
  • 314 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信