Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Intent.CATEGORY\u APP\u计算器:ActivityNotFoundException_Java_Android_Android Intent_Android Activity_Activitynotfoundexception - Fatal编程技术网

Java Intent.CATEGORY\u APP\u计算器:ActivityNotFoundException

Java Intent.CATEGORY\u APP\u计算器:ActivityNotFoundException,java,android,android-intent,android-activity,activitynotfoundexception,Java,Android,Android Intent,Android Activity,Activitynotfoundexception,我正在尝试在android应用程序中打开默认计算器应用程序。设备中安装了两个计算器:默认android计算器和 Intent calc=Intent.makeMainSelector活动(Intent.ACTION\u MAIN、Intent.CATEGORY\u APP\u计算器); 星触觉(calc); 此代码正在引发ActivityNotFoundException,并在logcat中显示: system\u进程W/IntentResolver:resolveIntent失败:找到匹配项

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

Intent calc=Intent.makeMainSelector活动(Intent.ACTION\u MAIN、Intent.CATEGORY\u APP\u计算器);
星触觉(calc);
此代码正在引发ActivityNotFoundException,并在logcat中显示:

system\u进程W/IntentResolver:resolveIntent失败:找到匹配项,但没有类别为默认值
此代码具有相同的行为:

Intent calc=新意图(Intent.ACTION\u MAIN);
calc.addCategory(意图.类别\应用\计算器);
星触觉(calc);
这是一个安卓错误?如何打开应用程序选择器,让用户选择默认应用程序

堆栈跟踪:

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);

上面的答案是有效的,但它不能回答这个问题。问题是如何通过类别隐式启动计算器。股票计算器(非google play版本)的清单中包含以下内容:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.APP_CALCULATOR" />
    </intent-filter>

问题很简单。如果如下图所示修改了intent过滤器,则可以启动计算器(在运行8.1的Pixel2上进行测试):


默认的
类别是必需的(并且有明确的文档记录)。问题是想要启动活动的应用程序无法控制目标活动中的清单

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.APP_CALCULATOR" />
    </intent-filter>