Android 未找到处理意图的活动(API级别19)

Android 未找到处理意图的活动(API级别19),android,android-intent,implicit,Android,Android Intent,Implicit,在我的生命中,我已经与这个含蓄的意图斗争了两天多了。我正在尝试使用startActivityintent隐式启动一个活动,但我一直没有找到可以处理intent的活动,我已经按照android开发者网站上关于如何创建和处理隐式intent的说明进行了操作,并浏览了web,包括许多关于stackoverflow的帖子,但问题仍然存在。现在是编写一些代码的时候了: 组件A-激发隐式意图 与组件A位于同一应用程序中的Android清单 我可能做错了什么?我在使用广播意图方面取得了巨大的成功,但在这种情况

在我的生命中,我已经与这个含蓄的意图斗争了两天多了。我正在尝试使用startActivityintent隐式启动一个活动,但我一直没有找到可以处理intent的活动,我已经按照android开发者网站上关于如何创建和处理隐式intent的说明进行了操作,并浏览了web,包括许多关于stackoverflow的帖子,但问题仍然存在。现在是编写一些代码的时候了:

组件A-激发隐式意图 与组件A位于同一应用程序中的Android清单
我可能做错了什么?我在使用广播意图方面取得了巨大的成功,但在这种情况下我不想使用广播/接收器。

所以我最终找到了答案

碰巧的是,当通过setData或使用接受URI的构造函数在intent上设置数据URI时,系统会确定intent所需的适当MIME类型

    Intent intent = new Intent(AppConstants.ACTION_VIEW_OUTLET);
    intent.putExtra("OUTLET_ID", 
        Uri.withAppendedPath(OutletsContentProvider.CONTENT_URI, String.valueOf(outletID)));
    intent.addCategory(Intent.CATEGORY_DEFAULT); 
如果未设置或指定URI或数据,则需要使用settype指定与意图关联的数据MIME的类型

所以基本上,我没有设置我需要的MIME类型,因为我在初始化意图时设置了数据URI。由于数据类型测试失败,意图筛选器无法与隐式意图匹配

在我的工作中,我通过putExtra方法传递URI,而不设置数据

我还从android清单中删除了对intent过滤器中数据标记的引用

    <activity
        android:name=".OutletDetailsActivity"
        android:label="@string/title_activity_outlet_details">
        <intent-filter>
            <action android:name="com.synkron.pushforshawarma.ACTION_VIEW_OUTLET" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

您拥有的那些日志的输出是什么?06-22 11:18:54.187:E/AndroidRuntime18813:致命异常:main 06-22 11:18:54.187:E/AndroidRuntime18813:Process:com.synkron.pushforshawarma,PID:18813 06-22 11:18:54.187:E/AndroidRuntime18813:android.content.ActivityNotFoundException:未找到处理意图的活动{act=com.synkron.pushforshawarma.ACTION\u VIEW\u OUTLET cat=[android.intent.category.DEFAULT]dat=content://com.synkron.pushforshawarma.contentproviders.OutletsContentProvider/outlets/3 }06-22 11:18:54.187:E/AndroidRuntime18813:at android.app.Instrumentation.checkstartactivityresultimation.java:1781 06I是指您发布的代码中的日志。在其中打印操作和数据字符串。06-22 11:30:04.561:I/OutletListingsActivity3046:随操作发送的意图:com.synkron.pushforshawarma.action\u VIEW\u OUTLET 06-22 11:30:04.561:I/OutletListingsActivity3046:随数据发送的意图:content://com.synkron.pushforshawarma.contentproviders.OutletsContentProvider/outlets/3so 这就是了。logcat中的日志条目对应于对log.i的调用
    Intent intent = new Intent(AppConstants.ACTION_VIEW_OUTLET);
    intent.putExtra("OUTLET_ID", 
        Uri.withAppendedPath(OutletsContentProvider.CONTENT_URI, String.valueOf(outletID)));
    intent.addCategory(Intent.CATEGORY_DEFAULT); 
    <activity
        android:name=".OutletDetailsActivity"
        android:label="@string/title_activity_outlet_details">
        <intent-filter>
            <action android:name="com.synkron.pushforshawarma.ACTION_VIEW_OUTLET" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>