这种情况下,只有当intent对象的URI匹配到了intent-filter中的URI格式,并且intent-filter没有指定MIME类型的时候才能通过data测试。需要注意的是,这里所说的intent-filter没有指定MIME类型的情形指的是intent-filter中所有的<data />标签都没有指定MIME类型,即整个intent-filter中完全没有android:mimeType这几个字,理解这点很重要,大家在下面的几个示例中可以体会到这点。
例如有如下intent对象:
Intent intent = new Intent();
intent.setAction("com.ispring.action.ACTION_TEST1");
Uri uri = Uri.parse("ispring://blog.csdn.net/sunqunsunqun");
intent.setData(uri);
上面的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" /> </intent-filter>
上面的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:scheme="sunqun" android:host="8080" /> </intent-filter>
intent对象虽然不能通过scheme为sunqun的<data />标签测试,但是可以通过scheme为ispring的data标签测试,且intent对象和intent-filter中的两个<data />标签都没有指定MIME,所以上面的intent对象可以通过该intent-filter测试。
上面的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" android:scheme="ispring" android:host="blog.csdn.net" /> </intent-filter>










