如何使用ACTION_VIEW传递给不同的活动

时间:2011-08-24 02:15:10

标签: android android-intent action

    <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。

1 个答案:

答案 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"));