java - Intent .CATEGORY_APP_CALCULATOR : ActivityNotFoundException

标签 java android android-intent android-activity activitynotfoundexception

我正在尝试在 Android 应用程序中打开默认计算器应用程序。设备中安装了两个计算器:默认安卓计算器和Google Calculator .

Intent calc = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_CALCULATOR);
startActivity(calc);

此代码抛出 ActivityNotFoundException 并在 logcat 中显示:

system_process W/IntentResolver: resolveIntent failed: found match, but none with CATEGORY_DEFAULT

此代码具有相同的行为:

Intent calc = new Intent(Intent.ACTION_MAIN);
calc.addCategory(Intent.CATEGORY_APP_CALCULATOR);
startActivity(calc);

这是一个 Android 错误?如何打开应用选择器,让用户选择默认应用?

堆栈跟踪:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] sel=act=android.intent.action.MAIN cat=[android.intent.category.APP_CALCULATOR]} }
     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805)
     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1514)
     at android.app.Activity.startActivityForResult(Activity.java:3930)
     at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)
     at android.app.Activity.startActivityForResult(Activity.java:3890)
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
     at android.app.Activity.startActivity(Activity.java:4213)
     at android.app.Activity.startActivity(Activity.java:4181)
     at com.MyActivity.openCalc(MyActivity.java:202)
     at com.MyActivity.onOptionsItemSelected(MyActivity.java:191)
     at android.app.Activity.onMenuItemSelected(Activity.java:2914)
     at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)
     at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
     at android.app.ActivityThread.main(ActivityThread.java:5461)

最佳答案

文档指向的方式似乎不起作用。尽管如此,这段代码通常会打开默认的计算器应用程序。

Intent intent = new Intent();
intent.setClassName("com.android.calculator2", "com.android.calculator2.Calculator");
startActivity(intent);

关于java - Intent .CATEGORY_APP_CALCULATOR : ActivityNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902805/

相关文章:

javascript - navigator.share 在移动浏览器中不起作用(chrome v64)

java - 自动导入哪些 Java 类/包?

android - 如何使用 Retrofit/Android 将位图发布到服务器

java - Java 应用程序最快的服务包装器

android - 单击通知时应用程序未恢复

java - 有什么方法可以在按住另一个 View 一段时间后在另一个 View 之上打开一个不同的 View

android - 当用户按下主页按钮时捕获

android - 在 Android 中,我如何找出在运行时处理 Intent 的类(logcat 很好)

java - 什么是支持范围查询的对 Java 友好的内存映射?

java - 在 JAVA 公式中使用 If 语句