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

如何在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 exception

11-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_PHONE

11-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)


MMTTMM
浏览 472回答 3
3回答

慕丝7291255

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

FFIVE

更优雅的选择:String&nbsp;phone&nbsp;=&nbsp;"+34666777888";Intent&nbsp;intent&nbsp;=&nbsp;new&nbsp;Intent(Intent.ACTION_DIAL,&nbsp;Uri.fromParts("tel",&nbsp;phone,&nbsp;null));startActivity(intent);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android