我有点困惑为什么隐式意图调用失败了。尝试启动意图时,我不断收到以下错误:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://org.chrisolsen.crossfit.providers.WorkoutProvider/workouts typ=vnd.android.cursor.dir/vnd.chrisolsen.crossfit.workout }
AndroidManifest
<activity android:name=".activities.WorkoutsActivity"
android:label="@string/title_workouts" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="vnd.android.cursor.dir/vnd.chrisolsen.crossfit.workout"/>
</intent-filter>
</activity>
<provider
android:name=".providers.WorkoutProvider"
android:authorities="org.chrisolsen.crossfit.providers.WorkoutProvider" />
致电活动(仪表板)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(WorkoutProvider.CONTENT_URI, "vnd.android.cursor.dir/vnd.chrisolsen.crossfit.workout");
startActivity(intent);
被叫活动(锻炼)。它没有在这里
Uri uri = getIntent().getData();
...
看起来它应该很简单,但我很困惑为什么它说找不到任何活动。
有什么想法吗?
答案 0 :(得分:5)
为了以隐含意图开始,活动必须声明
<category android:name="android.intent.category.DEFAULT" />
答案 1 :(得分:0)
另外,请确保使用的是startActivity
而不是sendBroadcast
。这些方法之间存在差异。活动的意图过滤器不会接收广播。您必须使用BroadcastReceiver
。
请注意,虽然Intent类用于发送和接收这些广播,但此处的Intent广播机制与用于使用Context.startActivity()启动活动的Intent完全分开。 BroadcastReceiver无法查看或捕获与startActivity()一起使用的Intent;同样,当你广播一个意图时,你永远不会找到或开始一个活动。这两个操作在语义上非常不同:使用Intent启动Activity是一个前台操作,它修改用户当前正在与之交互的内容;广播Intent是用户通常不知道的后台操作。
来源:http://developer.android.com/reference/android/content/BroadcastReceiver.html