1、修改AndroidManifest.xml文件
要将activity进行归类,需要在activity节点中中添加intent-filter,并且添加action和category的值,其中name值可以自己定义,代码如下:
<activity
android:name="demo.material.SlideNavActivity"
android:label="@string/title_activity_nav_slider"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.entrance" />
</intent-filter>
</activity>
2、在代码中过滤activity
在AndroidManifest.xml设置好后,在代码中,用PackageManager中的queryIntentActivities方法,传入Intent值,从而得到过过滤的activity,代码如下:
ArrayList<Map<String, Object>> maps = new ArrayList<Map<String, Object>>(
0);
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(CATEGORY_SDK_DEMO);
PackageManager pm = getPackageManager();
/**
* 根据配置Maifest.xml信息进行筛选activity
*/
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
int size = resolveInfos.size();
for (int i = 0; i < size; i++) {
ResolveInfo info = resolveInfos.get(i);
Map<String, Object> item = new HashMap<String, Object>(2);
CharSequence labelSeq = info.loadLabel(pm);
item.put("title", labelSeq != null ? labelSeq.toString()
: info.activityInfo.name);
item.put(
"intent",
activityIntent(
info.activityInfo.applicationInfo.packageName,
info.activityInfo.name));
maps.add(item);
}
随后,只要设置点击事件,并把Intent取出来,进行跳转即可,代码如下: @OnItemClick(R.id.lv_all_activity) public void itemClick(int position){ //点击跳转 startActivity((Intent) ((Map<String, Object>)mLvAllActivity.getItemAtPosition(position)).get("intent")); }
3、该小demo的github地址