- 判断是否已经创建了快捷方式(在某些机型中需要判断)
1 2 3 4 5 6 7 8 9 10 11 12 13
| private boolean hasShortcut() { 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[] {mapViewActivity.getString(R.string.app_name).trim()}, null ); if (c!= null && c.getCount()> 0 ){ isInstallShortcut = true ; } return isInstallShortcut ; }
|
- 创建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
private void addShortcut(){ Intent shortcut = new Intent( "com.android.launcher.action.INSTALL_SHORTCUT" ); shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); shortcut.putExtra( "duplicate" , false ); Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); shortcutIntent.setClassName( this , this .getClass().getName()); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext( this , R.drawable.icon); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); sendBroadcast(shortcut); }
|
- 删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
private void delShortcut(){ Intent shortcut = new Intent( "com.android.launcher.action.UNINSTALL_SHORTCUT" ); shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); String appClass = this .getPackageName() + "." + this .getLocalClassName(); ComponentName comp = new ComponentName( this .getPackageName(), appClass); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); sendBroadcast(shortcut); }
|
- 声明权限
在AndroidManifest.xml 文件中声明 创建和删除快捷方式时声明权限
1 2
| <uses-permission android:name= "com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name= "com.android.launcher.permission.UNINSTALL_SHORTCUT" />
|