找不到活动来处理具有操作和数据的Intent

时间:2017-10-23 14:20:44

标签: java android android-intent

我写了两个不同的Android应用程序。

我希望一个应用程序创建一个intent,然后在另一个应用程序中启动一个活动。

创建intent的第一个应用程序具有以下代码:

Intent intent = new Intent();
intent.setAction("com.example.printtest.ACTION_PRINT");

Uri.Builder builder = new Uri.Builder();
builder.scheme("PrintAPI")
                .authority("StartPrintJob")
                .appendQueryParameter("appId", "aaa");
Uri uri = builder.build();
intent.setData(uri);

startActivity(intent);

我想要接收意图的第二个应用程序在其清单中定义了以下内容:

<activity android:name=".PrintActivity">
    <intent-filter>
        <action android:name="com.example.printtest.ACTION_PRINT"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

根据我的理解,第二个应用程序中的活动应该被认为是启动此意图的活动。但是,每次都抛出相同的异常。抛出的异常是:

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.myapp, PID: 21665
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.printtest.ACTION_PRINT dat=PrintAPI://StartPrintJob?appId=aaa }

有什么东西我不见了吗? 仅通过在意图上设置actiondata来启动其他应用程序中的活动是否有效?

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:2)

您忘记添加数据部分

<activity android:name=".PrintActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="com.example.printtest.ACTION_PRINT"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:scheme="PrintAPI"></data>
        </intent-filter>
    </activity>