Lollipop .setPackage(" com.android.phone")

时间:2014-11-21 15:57:34

标签: android android-5.0-lollipop

我使用setPackage(" com.android.phone")明确告诉Android使用默认拨号器。这适用于4.4.4。

升级到Lollipop后,失败了。

FATAL EXCEPTION: IntentService[CallIntentService]
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxxx flg=0x14000000 pkg=com.android.phone }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
at android.app.ContextImpl.startActivity(ContextImpl.java:1237)
at android.app.ContextImpl.startActivity(ContextImpl.java:1219)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:322)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)

我们已经有了解决方法吗?

2 个答案:

答案 0 :(得分:1)

Lollipop拨号程序的程序包名称为com.google.android.dialer(至少在Nexus设备上)。

如果您确实要对软件包名称进行硬编码,则可能需要检测设备上哪些拨号器可用。

答案 1 :(得分:1)

setPackage name has changed for Lollipop and above.

Intent intent = new Intent(Intent.ACTION_CALL);  
intent.setPackage("com.android.phone");        < 5 (Lollipop)
intent.setPackage("com.android.server.telecom");    >= 5 (Lollipop)
intent.setData(Uri.parse("tel:12121212"));
startActivity(intent);

But its better to choose user.
works "com.android.server.telecom" 5 and above.