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

时间:2011-06-19 19:57:27

标签: 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.setData(Uri.parse("tel:65465446"));
Intent chooser = null;
chooser = Intent.createChooser(dialer,"Select Dialing Software..."); 
startActivity(chooser);

chooser menu

如果我选择 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)

清单已添加<uses-permission android:name="android.permission.CALL_PRIVILEGED"/>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要使用CALL_PRIVILEGED吗?我认为与CALL_PHONE的唯一区别是它可以拨打紧急号码(65465446看起来不像一个)。用CALL_PHONE替换它,我相信它会正常工作。