不知道怎么解决,求高手指点。
以下是我写的建立快捷方式的代码,请各位高手帮忙看下:
public static boolean addShortcut(Context context, String pkg) {
Log.i("i", "dddssss");
// 快捷方式名
String title = context.getString(R.string.app_name);
// MainActivity完整名
String mainAct = null;
// 应用图标标识
int iconIdentifier = 0;
// 根据包名寻找MainActivity
PackageManager pkgMag = context.getPackageManager();
Log.i("ii", "pkgMag: "+pkgMag);
System.out.println("pkgMag: "+pkgMag);
Intent queryIntent = new Intent(Intent.ACTION_MAIN, null);
//queryIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
//queryIntent.setClass(context, context.getClass());
queryIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> list = pkgMag.queryIntentActivities(queryIntent,
PackageManager.GET_ACTIVITIES);
for (int i = 0; i < list.size(); i++) {
ResolveInfo info = list.get(i);
if (info.activityInfo.packageName.equals(pkg)) {
title = info.loadLabel(pkgMag).toString();
mainAct = info.activityInfo.name;
iconIdentifier = info.activityInfo.applicationInfo.icon;
break;
}
}
if (mainAct == null) {
// 没有启动类
return false;
}
Intent shortcut = new Intent(
"com.android.launcher.action.INSTALL_SHORTCUT");
//shortcut.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
// 快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
ComponentName comp = new ComponentName(pkg, mainAct);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
Intent.ACTION_MAIN).setComponent(comp));
shortcut.putExtra("duplicate", false);
// 快捷方式的图标
Context pkgContext = null;
if (context.getPackageName().equals(pkg)) {
pkgContext = context;
} else {
// 创建第三方应用的上下文环境,为的是能够根据该应用的图标标识符寻找到图标文件。
try {
pkgContext = context.createPackageContext(pkg,
Context.CONTEXT_IGNORE_SECURITY
| Context.CONTEXT_INCLUDE_CODE);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
if (pkgContext != null) {
ShortcutIconResource iconRes = Intent.ShortcutIconResource
.fromContext(pkgContext, iconIdentifier);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
}
// 发送广播,让接收者创建快捷方式
// 需权限<uses-permission
// android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
context.sendBroadcast(shortcut);
return true;
}
Manifest里面也添加了权限:<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
我看UC浏览器和360手机卫士的两个快捷方式都是只开启一次软件的,我这怎么就开启两次软件了呢,求高手解决啊!谢谢各位啦!