我得理解 category 就相当于提供给框架的一个划分类型的的标识。这些标识在显式的Intent中并没有展示出多大价值(也可能是我学的不好)但是在隐式Intent时却体现了很大的作用。
其中系统提供的:
例如:
<category android:name="android.intent.category.LAUNCHER" />
他就是提供给系统的标识,提示系统这是主页面。
<category android:name="android.intent.category.DEFAULT"></category>
这种那就是告诉系统这是普通页面。
还有一些其他类型我并没有尝试过。
还有一些是可以自己编写:
例如:
<activity android:name=".MainActivity2">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="gecer" />
</intent-filter>
</activity>
隐式Intent跳转
例如我想跳转到刚才写的.MainActivity2这个Activity页面中取
var intent:Intent=Intent(Intent.ACTION_DEFAULT);
intent.addCategory("gecer")
startActivity(intent);
多页面赋值同一个category
这时候我引发联想,当我把带有gecer这个name的category给了MainActivity2时,那么我是否还能进行隐式Intent跳转。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.k01">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.K01">
<activity android:name=".MainActivity3">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="gecer" />
</intent-filter>
</activity>
<activity android:name=".MainActivity2">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="gecer" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这时我还是执行原来的隐式Intent跳转 ,这时出现了这种打开方式的选择页面,如果选中其中的一个,就会跳转到上面配置的页面中去。
程序之间调用
于是我又产生了联想,这与平时微信接收一个文件,打开文件时让选择用什么应用打开有点类似,于是我就想到这种方式是不是能跨应用,于是新创建了一个项目k02,对原来的项目k01进行调用,发现还真的可以跨程序进行调用。
其他
Intent还有许多其他的用法(制定data中的scheme、host、port、path),这里就不在赘述,也可能会在后续问文章中提及。