Android 活动选择器菜单问题:拨打电话号码

Android 活动选择器菜单问题:拨打电话号码,android,android-activity,android-intent,Android,Android Activity,Android Intent,此代码从我的应用程序成功拨打电话 Intent dialer = new Intent("android.intent.action.CALL_PRIVILEGED"); mail.setData(Uri.parse("tel:65465446")); startActivity(dialer); 但是当尝试使用这样的活动选择器时: Intent dialer = new Intent("android.intent.action.CALL_PRIVILEGED"); dialer.setD

此代码从我的应用程序成功拨打电话

Intent dialer = new Intent("android.intent.action.CALL_PRIVILEGED");
mail.setData(Uri.parse("tel:65465446"));
startActivity(dialer);

但是当尝试使用这样的活动选择器时:

Intent dialer = new Intent("android.intent.action.CALL_PRIVILEGED");
dialer.setData(Uri.parse("tel:65465446"));
Intent chooser = null;
chooser = Intent.createChooser(dialer,"Select Dialing Software..."); 
startActivity(chooser);

如果我选择Dialer选项,它会抛出以下Logcat错误,而SkypeOut工作正常

E/AndroidRuntime(  384): FATAL EXCEPTION: main
E/AndroidRuntime(  384): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL_PRIVILEGED dat=tel:65465446 flg=0x3000000 cmp=com.android.phone/.PrivilegedOutgoingCallBroadcaster } from ProcessRecord{44f4de30 384:com.dialer/10036} (pid=384, uid=10036) requires android.permission.CALL_PRIVILEGED
E/AndroidRuntime(  384):    at android.os.Parcel.readException(Parcel.java:1247)
E/AndroidRuntime(  384):    at android.os.Parcel.readException(Parcel.java:1235)
E/AndroidRuntime(  384):    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1298)
E/AndroidRuntime(  384):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)
E/AndroidRuntime(  384):    at android.app.Activity.startActivityForResult(Activity.java:2817)
E/AndroidRuntime(  384):    at android.app.Activity.startActivity(Activity.java:2923)
E/AndroidRuntime(  384):    at com.android.internal.app.ResolverActivity.onClick(ResolverActivity.java:190)
E/AndroidRuntime(  384):    at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:874)
E/AndroidRuntime(  384):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
E/AndroidRuntime(  384):    at android.widget.ListView.performItemClick(ListView.java:3382)
E/AndroidRuntime(  384):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
E/AndroidRuntime(  384):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(  384):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(  384):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  384):    at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  384):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  384):    at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  384):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  384):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  384):    at dalvik.system.NativeStart.main(Native Method)
清单已添加


谢谢您的帮助。

您需要使用呼叫特权吗?我认为与CALL_电话的唯一区别在于它可以拨打紧急电话号码(65465446看起来不像)。我相信,用电话代替它,它会很好地工作。

是的。不幸的是,它不起作用。行动\呼叫和行动\拨号也不符合我的目的,可能与以下原因有关:-似乎非系统应用程序实际上无法使用呼叫专用功能…..请参阅我问题的第一部分,它对我有效!当我从菜单中选择skype时也可以工作,只有当我选择dialer时它才不工作