Android启动快捷方式的方法

最近想在APP中启动其他应用的快捷方式(不是启动应用,而是启动类似绿色守护中那种,关屏并休眠的快捷方式)

在网上找了很多文章,大部分都是讲如何设置快捷方式,并没有说如何用代码启动,就稍微折腾了一下。

方法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//获取到所有快捷方式
Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
List<ResolveInfo> shortcuts = getPackageManager().queryIntentActivities(
shortcutsIntent, 0);
for (ResolveInfo resolveInfo : shortcuts) {
String name = resolveInfo.activityInfo.applicationInfo.packageName;
String activityName = resolveInfo.activityInfo.name;
String label=resolveInfo.activityInfo.applicationInfo.name;
int flags=resolveInfo.activityInfo.flags;
Log.i(TAG, "updatePackages: "+name+" "+activityName+" "+flags+" "+label);
}

//启动方式如下
ActivityInfo ai=shortcuts.get(7).activityInfo;
String pkgName=ai.applicationInfo.packageName;
String activityName=ai.name;
int flag=ai.flags;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName(pkgName,
activityName);

intent.addFlags(flag);
startActivity(intent);

//获取对应icon方法如下
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName(pkgName,
activityName);
intent.addFlags(flag);
try {
Drawable dw=pm.getActivityIcon(intent);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}

在这个地方踩到一个坑:
如果手机内有“冰箱”这类的应用将app停用,app或者快捷方式就无法打开了。
解决方法也很简单,使用enable指令就可以再打开了。