<activity android:name=".AnotherActivity">
<intent-filter >
<action android:name="android.intent.action.GET_CONTENT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note1" />
</intent-filter>
</activity>
<activity android:name=".ThirdActivity">
<intent-filter >
<action android:name="android.intent.action.CHOOSER" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note2" />
</intent-filter>
</activity>`
这是我在Android项目演示中的AndroidManifest.xml。我正在使用ContentProvider向不同的活动发送请求。提供方式是这样的:
private OnClickListener l = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(intent);
}
};
private Intent intent;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(l);
intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("content://com.test/b"));
}
我的问题是我在startActivity时如何区分这两项活动。
我想到的唯一方法是,让两个activty在AndroidManifest中具有不同的mimeTypes。并使用不同的uri发送请求,并覆盖提供程序中的getType方法以返回两个活动的相应mimetype。
答案 0 :(得分:0)
有几种方法可以确定哪个活动处理您的Intent。根据您要执行的操作,您可能只想将类设置为直接选择应触发的活动。 E.g。
Intent intent = new Intent(this, ThirdActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("content://com.test/b"));