- 判断是否已经创建了快捷方式(在某些机型中需要判断)
| 12
 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 ;
 }
 
 | 
- 创建
| 12
 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);
 }
 
 | 
- 删除
| 12
 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 文件中声明 创建和删除快捷方式时声明权限
| 12
 
 | <uses-permission android:name= "com.android.launcher.permission.INSTALL_SHORTCUT"  />  <uses-permission android:name= "com.android.launcher.permission.UNINSTALL_SHORTCUT"  />
 
 |