Activity Flag
intent.addFlags(Intent.XXX)
FLAG_ACTIVITY_NEW_TASK singleTask
FLAG_ACTIVITY_SINGLE_TOP singleTop
FLAG_ACTIVITY_CLEAR_TOP 在此之上的所有的都要出栈
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 拥有这个标记的Activity不会出现在历史Activity列表中
已知包名
包名与类名:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER); // android默认给加上一个CATEGORY_DEFAULT
ComponentName cn = new ComponentName(packageName, className); // 包名类名
intent.setComponent(cn);
startActivity(intent);
单独知道包名:
PackageManager packageManager = getPackageManager();
Intent intent=new Intent();
intent =packageManager.getLaunchIntentForPackage("pkgName"); // 获取Intent
if(intent==null){
System.out.println("APP not found!");
}
startActivity(intent);
}
未知包名
a. Filter Rules
使用IntentFilter来限定应用处理的通用操作
动作、类型、数据、定义类型
action category data
匹配规则如下:
一个IntentFilter对应一个Intent
必须匹配三个条件:1. action&category必须匹配 2. data(data type & data scheme authority path)匹配 3. Action匹配
如果没有action,则IntentFilter只会匹配没有action的Intent
action匹配规则:必须相同,如果没有action,则带有action intent匹配失败
category