当前位置: 移动技术网 > IT编程>移动开发>Android > Android编程添加快捷方式(Short)到手机桌面的方法(含添加,删除及查询)

Android编程添加快捷方式(Short)到手机桌面的方法(含添加,删除及查询)

2019年07月24日  | 移动技术网IT编程  | 我要评论

win8.1系统下载,赤野光信,婚礼主题

本文实例讲述了android编程添加快捷方式(short)到手机桌面的方法。分享给大家供大家参考,具体如下:

权限

要在手机桌面上添加快捷方式,首先需要在manifest中添加权限。

<!-- 添加快捷方式 -->
<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" />

添加快捷方式

添加快捷方式,是向桌面应用(launcher)发送相关action的广播,相关的action如下:

复制代码 代码如下:
public static final string action_add_shortcut = "com.android.launcher.action.install_shortcut";

添加快捷方式:

private void addshortcut(string name) {
  intent addshortcutintent = new intent(action_add_shortcut);
  // 不允许重复创建
  addshortcutintent.putextra("duplicate", false);// 经测试不是根据快捷方式的名字判断重复的
  // 应该是根据快链的intent来判断是否重复的,即intent.extra_shortcut_intent字段的value
  // 但是名称不同时,虽然有的手机系统会显示toast提示重复,仍然会建立快链
  // 屏幕上没有空间时会提示
  // 注意:重复创建的行为miui和三星手机上不太一样,小米上似乎不能重复创建快捷方式
  // 名字
  addshortcutintent.putextra(intent.extra_shortcut_name, name);
  // 图标
  addshortcutintent.putextra(intent.extra_shortcut_icon_resource,
      intent.shortcuticonresource.fromcontext(mainactivity.this,
          r.drawable.ic_launcher));
  // 设置关联程序
  intent launcherintent = new intent(intent.action_main);
  launcherintent.setclass(mainactivity.this, mainactivity.class);
  launcherintent.addcategory(intent.category_launcher);
  addshortcutintent
      .putextra(intent.extra_shortcut_intent, launcherintent);
  // 发送广播
  sendbroadcast(addshortcutintent);
}

移除快捷方式

移除快捷方式的action:

复制代码 代码如下:
public static final string action_remove_shortcut = "com.android.launcher.action.uninstall_shortcut";

移除快捷方式的方法:

private void removeshortcut(string name) {
  // remove shortcut的方法在小米系统上不管用,在三星上可以移除
  intent intent = new intent(action_remove_shortcut);
  // 名字
  intent.putextra(intent.extra_shortcut_name, name);
  // 设置关联程序
  intent launcherintent = new intent(mainactivity.this,
      mainactivity.class).setaction(intent.action_main);
  intent.putextra(intent.extra_shortcut_intent, launcherintent);
  // 发送广播
  sendbroadcast(intent);
}

在两个手机上测试,发现小米手机上添加了快捷方式后不能移除,三星手机可以。

查询快捷方式

查询快捷方式是否存在的方法是从网上其他资料那里查来的,但是测试查询的时候失败了,两个手机(小米、三星)都查不到。

先留着代码以后看看是什么原因吧:

private boolean hasinstallshortcut(string name) {
  boolean hasinstall = false;
  final string authority = "com.android.launcher2.settings";
  uri content_uri = uri.parse("content://" + authority
      + "/favorites?notify=true");
  // 这里总是failed to find provider info
  // com.android.launcher2.settings和com.android.launcher.settings都不行
  cursor cursor = this.getcontentresolver().query(content_uri,
      new string[] { "title", "iconresource" }, "title=?",
      new string[] { name }, null);
  if (cursor != null && cursor.getcount() > 0) {
    hasinstall = true;
  }
  return hasinstall;
}

希望本文所述对大家android程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网