隐式打开Activity——Intent设置(如何打开)和Intent-fileter配置(怎么能被打开)
打开一个Activity的Intent设置和目标Activity的intent-filter配置是一一对应的。
首先看一个Activity的intent-filter的配置:
<activity android:name=".InexplicitConfigActivity" android:label="@string/app_name" > <intent-filter> <!-- 设置接收动作,可以是系统标准动作,也可以是自定义动作,值皆为一个字符串 --> <action android:name="android.intent.action.VIEW"/> <!-- 设置接收意图范畴,一般使用系统给定的标准范畴,自定义的范畴无意义 --> <category android:name="android.intent.category.DEFAULT"/> <!-- 定义接收数据格式 --> <data android:scheme="https"></data> <data android:scheme="svn"></data> </intent-filter> <intent-filter> <action android:name="customAction"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
该配置表明该Activity在两种情况下能打开(隐式意图,显式意图不讨论):
1、使用系统标准动作android.intent.action.VIEW,默认范畴,且必须设置附加数据,数据的模式必须类似于“https://....”或“svn://...”;
2、使用自定义动作customAction,默认范畴,可以不设置附加数据;
对应的打开该Activity的代码如下:
Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.baidu.com")); intent.addCategory(Intent.CATEGORY_DEFAULT); startActivity(intent);
Intent intent = new Intent(); intent.setAction("customAction"); intent.addCategory(Intent.CATEGORY_DEFAULT); startActivity(intent);