public class ShortcutUtil {/** * 创建快捷方式 *  * @param context */public static void createShortcut(Context context, Class<?> target) {// <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.app_name));intent.putExtra("duplicate", false);Intent sIntent = new Intent(Intent.ACTION_MAIN);sIntent.addCategory(Intent.CATEGORY_LAUNCHER);// 加入action,和category之后,程序卸载的时候才会主动将该快捷方式也卸载sIntent.setClass(context, target);intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, sIntent);context.sendBroadcast(intent);}/** * 判断桌面上是否有的快捷方式 *  * @return */public static boolean hasShortcut(Context context) {final ContentResolver cr = context.getContentResolver();final String AUTHORITY = "com.android.launcher.settings";final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true");// <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>Cursor c = cr.query(CONTENT_URI, new String[] { "intent" }, null, null, null);if (c == null) {// 注: 2.1update和2.2版本的真机上测试无法访问com.android.launcher.settings,2.1update1的模拟器上可以// ERROR/ActivityThread(1136): Failed to find provider info for com.android.launcher.settingsreturn false;}while (c.moveToNext()) {String intentstring = c.getString(c.getColumnIndex("intent"));if (intentstring == null) {continue;}String componentString = getComponentString(intentstring);if (componentString.startsWith(context.getPackageName())) {return true;}}return false;}private static String getComponentString(String intentInfo) {// intent info 的格式:intent=#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.allstar.tanzhi/.activities.StartActivity;endint start = intentInfo.indexOf("component") + 9 + 1;int end = intentInfo.indexOf(";", start);return intentInfo.substring(start, end);}

更多相关文章

  1. Android判断apk是否存在
  2. Android(安卓)数据库操作 创建 添加 删除 查询
  3. js判断Android和Ios
  4. Retrofit系列文章翻译1—开始创建android客户端
  5. Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
  6. Android(安卓)android下的数据持久化和读取数据,保存数据到手机及
  7. android 实现静默安装、卸载(图)
  8. Android本地数据存储之SQLite
  9. Android深入浅出之Surface

随机推荐

  1. 「网工小白必备」全网最详细的网络基础之
  2. 网工小白必备」全网最详细的网络基础之IC
  3. 一文讲解图像插值算法原理!附Python实现
  4. 「网工小白必备」全网最详细的网络基础知
  5. PHP接口与抽象类实例
  6. 李士杰做一个独立的人性之人
  7. 一沟绝望的死水:模拟邮件服务器,批量注册利
  8. php学习笔记(接口与抽象类的区别与联系)
  9. 演示部分数组的排序,合并/交差并补等
  10. Centos7修改zabbix agent为root用户启动