2011-10-03 113 views
1

我做这利用了Android的呼入电话屏幕与后续的代码的应用程序:启动InCallScreen活动

Intent inCallIntent = new Intent(); 
inCallIntent.setClassName("com.android.phone", "com.android.phone.InCallScreen"); 
startActivity(inCallIntent); 

但我收到了如下错误:

10-03 17:23:30.802: ERROR/AndroidRuntime(1495): java.lang.RuntimeException: Error receiving broadcast Intent { act=...alarmservice flg=0x4 (has extras) } in [email protected] 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:771) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.os.Handler.handleCallback(Handler.java:609) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.os.Looper.loop(Looper.java:123) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.ActivityThread.main(ActivityThread.java:4595) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at dalvik.system.NativeStart.main(Native Method) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.android.phone/.InCallScreen } from ProcessRecord{449ae8e0 1495:....callmesoon/10099} (pid=1495, uid=10099) requires null 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.os.Parcel.readException(Parcel.java:1218) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.os.Parcel.readException(Parcel.java:1206) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1226) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.Activity.startActivityForResult(Activity.java:2789) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.Activity.startActivity(Activity.java:2895) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at ....CallMeSoon$2.onReceive(CallMeSoon.java:304) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:760) 
10-03 17:23:30.802: ERROR/AndroidRuntime(1495):  ... 9 more 

我知道,来自某处的许可被错过了。但是,可能是什么?

更新:权限是既不 android.permission.CALL_PHONE 也不 android.permission.CALL_PRIVILEGED

回答

0

一下添加到AndroidManifest.xml中

android.permission.CALL_PHONE 

android.permission.CALL_PRIVILEGED 

而且你是不是错过了拨号的电话号码,通常你在意向数据中设置了这个号码。如果你想拨打电话或使用其他Intent actions

Intent intent = new Intent(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:+15554441212")); 
startActivity(intent); 
+0

感谢您的回答,但所需的权限不是您提到的任何人。我仍然有同样的权限问题。 – jiahao

1

Caused by: java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.android.phone/.InCallScreen } from ProcessRecord{449ae8e0 1495:....callmesoon/10099} (pid=1495, uid=10099) requires null

这是根本原因,你需要设置你的意图就是这样,它在应用程序manifest资源配置文件应用程序组件的双项的产生是由于。您可能已在清单文件中多次声明了InCallScreen活动。 只需再检查一次。