创建桌面快捷方式的代码网上很多,但是大多都是转载,或者不全的,如果按照那思路去做,一般会被坑死,我就被坑了,但是我很高兴,因为最后解决了,把解决的方案分享给大家,不要再被坑。因为我只需要创建部分的代码,所以只贴了这些出来,卸载部分的代码就省了。
/**
* 创建快捷方式
*
* **/
private void createShorcut() {
if (!hasShortCut(this)) {//判断快捷方式是否已经创建,如果没有这个判断,每次进入软件Toast会给你一个提示,很烦人
String ACTION_ADD_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
Intent addShortcut = new Intent(ACTION_ADD_SHORTCUT);
Parcelable icon = Intent.ShortcutIconResource.fromContext(this,// 快捷方式图片
R.drawable.ic_launcher);
addShortcut.putExtra("duplicate", false); // 不允许重复创建
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "居丫");// 快捷方式名称
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
getApplicationContext(), WelcomeActivity.class));// 运行的程序主入口
sendBroadcast(addShortcut);
}
}
/*
* 判断快捷方式是否已经创建
*
*
* */
public static boolean hasShortCut(Context context) {
String url = "";
System.out.println(getSystemVersion());
if(getSystemVersion() < 8){ //判断如果系统版本小于2.2的,这个地方是网上抄别人的,小于2.2的路径和大于2.2的路径不同
url = "content://com.android.launcher.settings/favorites?notify=true";
}else{ //判断如果系统版本小大于2.2的
url = "content://com.android.launcher2.settings/favorites?notify=true";
}
ContentResolver resolver = context.getContentResolver();
Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",
new String[] {context.getString(R.string.app_name)}, null);
if (cursor != null && cursor.moveToFirst()) {
cursor.close();
return true;
}
return false;
}
private static int getSystemVersion(){ //获取系统版本
return android.os.Build.VERSION.SDK_INT;
}
最后加上权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />