最近項(xiàng)目中琉兜,使用的是比較老的系統(tǒng)開發(fā)pda,原生的系統(tǒng)是上下兩層的院仿,為了方便打開秸抚,需要給應(yīng)用程序添加快捷方式,方便在上層直接點(diǎn)擊進(jìn)入應(yīng)用歹垫。如下提供一個(gè)用到的工具類剥汤,大家有需要copy即可。
/**
* 創(chuàng)建刪除快捷圖標(biāo)
* 注意添加權(quán)限:
* com.android.launcher.permission.INSTALL_SHORTCUT
* com.android.launcher.permission.UNINSTALL_SHORTCUT
*/
public final class ShortCutUtil {
/**
* Don't let anyone instantiate this class.
*/
private ShortCutUtil() {
throw new Error("Do not need instantiate!");
}
/**
* 檢測是否存在快捷鍵
*
* @param activity Activity
* @return 是否存在桌面圖標(biāo)
*/
public static boolean hasShortcut(Activity activity) {
boolean isInstallShortcut = false;
final ContentResolver cr = activity.getContentResolver();
final String AUTHORITY = "com.android.launcher.settings";
final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
+ "/favorites?notify=true");
Cursor c = cr.query(CONTENT_URI,
new String[]{"title", "iconResource"}, "title=?",
new String[]{activity.getString(R.string.app_name).trim()},
null);
if (c != null && c.getCount() > 0) {
isInstallShortcut = true;
}
return isInstallShortcut;
}
/**
* 為程序創(chuàng)建桌面快捷方式
*
* @param activity Activity
* @param res res
*/
public static void addShortcut(Activity activity, int res) {
Intent shortcut = new Intent(
"com.android.launcher.action.INSTALL_SHORTCUT");
// 快捷方式的名稱
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
activity.getString(R.string.app_name));
// 不允許重復(fù)創(chuàng)建
shortcut.putExtra("duplicate", false);
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setClassName(activity, activity.getClass().getName());
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
// 快捷方式的圖標(biāo)
Intent.ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(
activity, res);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
activity.sendBroadcast(shortcut);
}
/**
* 刪除程序的快捷方式
*
* @param activity Activity
*/
public static void delShortcut(Activity activity) {
Intent shortcut = new Intent(
"com.android.launcher.action.UNINSTALL_SHORTCUT");
// 快捷方式的名稱
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
activity.getString(R.string.app_name));
String appClass = activity.getPackageName() + "."
+ activity.getLocalClassName();
ComponentName comp = new ComponentName(activity.getPackageName(),
appClass);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
Intent.ACTION_MAIN).setComponent(comp));
activity.sendBroadcast(shortcut);
}
}