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 创建,删除,检测桌面快捷方式相关推荐

  1. 创建autodock4.2桌面快捷方式

    创建autodock4.2桌面快捷方式 系统:ubantu16.04, 来源:网络+亲测 针对在/usr/share/applications下没有快捷方式的,以ADT为例. 打开Terminal,输 ...

  2. android自动创建快捷方式,Android开发之生成桌面快捷方式细则(原创)

    本文已独家授权 郭霖 ( guolin_blog) 公众号发布! 申明,标题里的快捷方式不是指开发人员使用频率极高的Ctrl+C和Ctrl+V:也不是IDE里Ctrl+D.Ctrl+F等常用快捷键.这 ...

  3. 如何创建计算机的桌面快捷方式,怎么设置桌面快捷方式,怎么创建快捷方式到桌面...

    很多win7系统用户反映说遇到这样一个问题,就是电脑上从文件服务器创建的快捷方式就会自动被删除,自己重新创建之后,过几天重新启动win7系统的时候,那些快捷方式又会自动被删除不见了,怎么办呢,下面以w ...

  4. 教你创建qq好友桌面快捷方式

    对于经常使用QQ聊天的朋友来说,在众多好友中搜寻自己常聊的密友虽然不是什么难事,但是我们可以使用更加简便的快捷方式来好友放在桌面上,当需要和他们聊天的时候,只要双击桌面上的好友图标就可以快速打开聊天窗 ...

  5. javascript - js 创建网页 url 桌面快捷方式(兼容chrome)-书签工具

    网上搜索了一圈,都是用 ActiveXObject("WScript.Shell");  只能是IE使用, 老款的IE本能就可以右键创建桌面快捷方式,我要的是可以Chrome和其他 ...

  6. 创建网页的桌面快捷方式,快速打开网页

    问题 在打开某个网页时,需要打开浏览器,键入网址,但速度太慢 方法 法1. 创建书签 法2. 创建桌面快捷方式 演示工具:Chrome浏览器 步骤1:打开某网页 步骤2:右上角 →\rightarro ...

  7. iOS开发如何删掉不可删除的桌面快捷方式【Web Clip】

    今早有个网友邮件联系我,说一个流氓软件 丝瓜视频网页版 描述文件安装以后不能删除怎么办? 我做了一个实验,确实没办法手动删除,真是流氓啊?哈哈,安装这个软件的小伙伴本来想着看了后就删了的(?),但是删 ...

  8. android 4.2 桌面快捷方式,Android 添加桌面快捷方式操做

    /** android * 为程序建立桌面快捷方式 app */ ide private void addShortcut(){ this Intent shortcut = new Intent(& ...

  9. ubuntu16.04下Sublime Text3中文无法输入解决方法和创建桌面快捷方式

    参考文章链接: git clone https://github.com/jfcherng/my_scripts 2.安装fcitx输入法 sudo apt-get install -y fcitx ...

最新文章

  1. 第十六届全国大学生智能车竞赛竞速组-室内视觉组补充说明
  2. Android核心分析之二十二Android应用框架之Activity
  3. 需求用例分析之四:业务规则
  4. 网络数据的大小端问题
  5. 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)
  6. LeetCode Algorithm 1267. 统计参与通信的服务器
  7. 什么是OpenCL?面向FPGA的OpenCL有何优点?
  8. elk系列1之入门安装与基本操作
  9. python批量修改labelme(COCO)标注的json文件的label标签名称
  10. 初学python之列表
  11. Kotlin — 适用于服务器开发
  12. 微信小程序云开发教程-JavaScript入门(1)-学习环境、函数、调试
  13. springboot获取Spring容器中的bean(ApplicationContextAware接口的应用)避免过多的或不用if..else,switch
  14. 学模具设计应该掌握哪些内容?
  15. import clip时Cannot re-initialize CUDA in forked subprocess
  16. 数据管理平台(DMP)简介
  17. 微信V3接口商家转账到零钱
  18. 关于ul ol li
  19. Axure8.0 -手机端长文字滚动演示
  20. 四、TCP中的流量控制和拥塞控制

热门文章

  1. java国际化---native2ascii.exe 的使用方法
  2. Android 内存泄漏总结文档
  3. git show HEAD^num和个git show HEAD~num的区别
  4. cufon,在网页上画出特殊字体
  5. WinPE ISO制作
  6. NOI2006 最大获利
  7. 2011.10.16
  8. 第2章数据库服务器的安装与卸载
  9. Python中静态方法的实现
  10. Mysql查看和修改时区