上面的intent对象之所以不能通过intent-filter中唯一的一个<data />标签测试是因为我们的intent对象没有指定MIME类型,但是上面的<data />标签通过android:mimeType="text/plain"设置了MIME类型。
上面的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="text/plain" /> </intent-filter>
上面的intent对象之所以无法通过该intent-filter中的data测试,是因为intent对象没有设置MIME类型,但是intent-filter中第二个data标签通过android:mimeType="text/plain"设置了MIME类型。
intent对象包含MIME类型但不包含URI
这种情况下,只有当intent中的MIME类型与intent-filter中列出的MIME类型相同,并且intent-filter没有指定任何的URI格式的时候才能通过data测试。需要注意的是,这里所说的intent-filter没有指定任何的URI格式的情形指的是intent-filter中所有<data />标签都没有指定URI,即整个intent-filter中完全没有android:scheme、android:host、android:port以及android:path,理解这点很重要,大家在下面的几个示例中可以体会到这点。
例如有如下intent对象:
Intent intent = new Intent();
intent.setAction("com.ispring.action.ACTION_TEST1");
intent.setType("text/plain");
上面的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>










