Android 创建,删除,检测桌面快捷方式
生活随笔
收集整理的這篇文章主要介紹了
Android 创建,删除,检测桌面快捷方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
參考
Android 創建快捷方式
Android 快捷方式動畫
?
創建桌面快捷方式需權限
??<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.READ_SETTINGS"?/>代碼實現
/***?創建快捷方式*?@param?cxt?Context上下文*?@param?icon?圖標*?@param?title?標題*?@param?args?附加參數*?@param?cls?目標Activity,注意,這里最好用LancherActivity,否則兼容性不好*/public?static??void?createDesktopShortCut(Context?cxt,?int?icon,?String?title,Bundle?args,Class<?>?cls)?{//?創建快捷方式的IntentIntent?shortcutIntent?=?new?Intent("com.android.launcher.action.INSTALL_SHORTCUT");//?不允許重復創建shortcutIntent.putExtra("duplicate",?false);//?需要現實的名稱shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,?title);//?快捷圖片ShortcutIconResource?ico?=?Intent.ShortcutIconResource.fromContext(cxt.getApplicationContext(),?icon);shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,?ico);Intent?intent?=?new?Intent(cxt,?cls);//?下面兩個屬性是為了當應用程序卸載時桌面上的快捷方式會刪除intent.setAction("android.intent.action.MAIN");intent.addCategory("android.intent.category.LAUNCHER");//可以帶參數,點擊快捷方式進入Activity時,一般可以從onStart中讀取該參數intent.putExtra("arguments",?args);//?intent.setSourceBounds(Rect);設置在屏幕上的坐標//?點擊快捷圖片,運行的程序主入口(部分APP需要通過主頁面進入)shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,?intent);//?發送廣播。OKcxt.sendBroadcast(shortcutIntent);Log.e("ShortCutIcon",?"Create");}/***?刪除快捷方式*?@param?cxt?上下文*?@param?cls?目標Activity*?@param?shortcutName?快捷方式名稱*/public?void?deleteShortCut(Context?cxt,Class?cls,String?shortcutName)?{?Intent?shortcut?=?new?Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");?//快捷方式的名稱?shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,shortcutName);?/**改成以下方式能夠成功刪除,估計是刪除和創建需要對應才能找到快捷方式并成功刪除**/?Intent?intent?=?new?Intent();?intent.setClass(cxt,?cls);?intent.setAction("android.intent.action.MAIN");?intent.addCategory("android.intent.category.LAUNCHER");?shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,intent);?cxt.sendBroadcast(shortcut);?}?/***?檢測快捷方式是否已經創建*?@param?cx?上下文*?@param?shortcutName?快捷方式名稱*?@return*/public?static?boolean?hasShortcut(Context?cx,String?shortcutName){boolean?result?=?false;//?獲取當前應用名稱final?String?uriStr;if?(android.os.Build.VERSION.SDK_INT?<?8)?{uriStr?=?"content://com.android.launcher.settings/favorites?notify=true";}?else?{uriStr?=?"content://com.android.launcher2.settings/favorites?notify=true";}final?Uri?CONTENT_URI?=?Uri.parse(uriStr);final?Cursor?c?=?cx.getContentResolver().query(CONTENT_URI,?null,?"title=?",?new?String[]?{?shortcutName?},?null);if?(c?!=?null?&&?c.getCount()?>?0)?{result?=?true;}return?result;}另外,我們可能需要對部分Icon進行一定的處理,顯然通過資源名稱讀取圖片到快捷方式具有局限性,比如如下方案
??//?快捷圖片ShortcutIconResource?ico?=?Intent.ShortcutIconResource.fromContext(cxt.getApplicationContext(),?icon);shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,?ico);我們需要進行圖片處理,處理后的圖片如果不存入MediaStore顯然不具有資源名稱,因此,我么可以選擇如下方案
???shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON,?newBitmap);Bitmap實現了Parcelable,因此這種方案是合理的
?
監聽快捷方式的安裝和卸載
創建監聽廣播
public?class?ShortCutBroadCastReciver?extends?BroadcastReceiver?{@Overridepublic?void?onReceive(Context?context,?Intent?intent)?{Log.e("ShortCutBroadCastReciver",?intent.getAction());}}?
注冊監聽
廣播可以被注冊多次,前提是如果你有多個IntentFilter
?private?void??registerBroadCast(){shortCutBroadCastReciver?=?new?ShortCutBroadCastReciver();IntentFilter?intentFilter?=?new?IntentFilter();intentFilter.addAction(INSTALL_SHORTCUT_ACTION);intentFilter.addAction(UNINSTALL_SHORTCUT_ACTION);registerReceiver(shortCutBroadCastReciver,?intentFilter);IntentFilter?intentFilte2?=?new?IntentFilter();intentFilte2.addAction(PACKAGE_ADDED_ACTION);intentFilte2.addAction(PACKAGE_REMOVED_ACTION);intentFilte2.addDataScheme("package");registerReceiver(shortCutBroadCastReciver,?intentFilte2);}?
轉載于:https://my.oschina.net/ososchina/blog/397943
總結
以上是生活随笔為你收集整理的Android 创建,删除,检测桌面快捷方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《C++语言基础》实践参考——友元类
- 下一篇: ssh登录命令(转)