详解Android中Intent对象与Intent Filter过滤匹配过程

2019-12-10 19:42:54于海丽

port不满足,URI测试不通过,导致data测试失败。

上面的intent对象无法通过下面的intent-filter的data测试:

<intent-filter>
  <action android:name="com.ispring.action.ACTION_TEST1" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="ispring" android:host="blog.csdn.net" />
  <data android:mimeType="image/*" />
</intent-filter>

android:mimeType不满足,MIME类型测试不通过,导致data测试失败。

假设有如下协议为content:的intent对象:

Intent intent = new Intent();
intent.setAction("com.ispring.action.ACTION_TEST1");
Uri uri = Uri.parse("content://com.ispring.test");
String type = "text/plain";
intent.setDataAndType(uri, type);

上面的intent对象无法通过下面的intent-filter的data测试:

<intent-filter>
  <action android:name="com.ispring.action.ACTION_TEST1" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="ispring" />
  <data android:mimeType="text/plain" />
</intent-filter>

URI中的scheme不匹配,导致URI测试不通过,导致data测试失败。

上面的intent对象可以通过下面的intent-filter的data测试:

<intent-filter>
  <action android:name="com.ispring.action.ACTION_TEST1" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="text/plain" />
</intent-filter>