我相信我已经阅读了所有类似的问题(其中有很多)。他们中的大多数人只是说确保活动(正确)在应用程序的 AndroidManifest.xml 中声明(完成),并且您请求的意图和声明的意图过滤器都包含默认类别 Intent.CATEGORY_DEFAULT(完成)。
我正在将应用程序项目中的一些活动移动到库项目(应用程序引用)中。它们被显式引用(通过类名),我现在尝试隐式引用它们(通过操作名称、数据 mime 类型和类别)。不幸的是,我启动活动的尝试是在主题行中生成带有详细消息的异常。
这是应用程序的 androidmanifest.xml(在应用程序节点内)中的活动声明:
<activity android:name="com.everyscape.android.panoramaui.ESPhotoViewActivity" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="com.everyscape.android.panoramaui.action.VIEW_WORLDTAG"/>
<data android:mimeType="@string/IMAGE_MIME_TYPE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
这是尝试启动该活动的代码:
Context context = this.getContext();
Intent intent = new Intent(ESViewWorldTagActivity.ACTION_VIEW_WORLDTAG);
intent.addCategory(Intent.CATEGORY_DEFAULT);
Uri uri = Uri.parse(dataURL);
intent.setDataAndType(uri, dataMimeType);
intent.putExtra(ESPhotoViewActivity.EXTRA_WORLDTAG_TITLE, title);
intent.putExtra(ESPhotoViewActivity.EXTRA_WORLDTAG_ID, worldTagId);
intent.putExtra(ESPhotoViewActivity.EXTRA_PANORAMA_ID,panoID);
intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
context.startActivity(intent);
过去 - 我使用明确的意图开始了活动。这是我第一次使用隐式意图。我不想使用明确的意图 - 因为我希望应用程序能够覆盖所使用的活动(并且启动活动的代码在库中 - 它不应该是特定于应用程序的)。
这是我得到的例外:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.everyscape.android.panoramaui.action.VIEW_WORLDTAG cat=[android.intent.category.DEFAULT] dat=http://ugc.everyscape.com//WT2/BF/EWW-Q-0A1E.JPG typ=image/* flg=0x8 (has extras) }
如何诊断和解决此异常?
谢谢,查克