我写了两个不同的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 }
有什么东西我不见了吗?
仅通过在意图上设置action
和data
来启动其他应用程序中的活动是否有效?
非常感谢任何帮助或建议。
答案 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>