- 动态创建快捷方式列表,先跳转到主页面做中转,然后在中转界面做相应的跳转处理,主要是获取对应的“.putExtra(“key”, id)”的数据来进行不同的跳转操作。
public void createShortcut() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
try {
if (true) {
ShortcutManager mShortcutManager = getSystemService(ShortcutManager.class);
List<ShortcutInfo> infoList = new ArrayList<>();
infoList.add(createShortcutInfo(
"id1", 0, icon1, "name1"));
infoList.add(createShortcutInfo(
"id2", 1, icon2, "name2"));
if (mShortcutManager != null)
mShortcutManager.setDynamicShortcuts(infoList);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private ShortcutInfo createShortcutInfo(String id, int rank, int icon, String label) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
return new ShortcutInfo.Builder(this, id)
.setShortLabel(label)// 快捷方式桌面名称
.setLongLabel(label)// APP长按显示的标题
.setRank(rank)// 显示顺序
.setIcon(Icon.createWithResource(this, icon))// 快捷方式的图标
.setIntent(new Intent(Intent.ACTION_MAIN, null, this, MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)//根据需求来设置Flag
.putExtra("key", id))// 传递跳转参数
.build();
}
return null;
}
- 跳转页处理
private void jump(){
Intent intent = getIntent();
String data = intent.getStringExtra("key");
if(data != null){
switch (data){
case "id1":
Intent intent1 = new Intent(this, test1Activity.class);
startActivity(intent1);
break;
case "id2":
Intent intent1 = new Intent(this, test2Activity.class);
startActivity(intent2);
break;
}
}
}