欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-19 22:29:46
本文实例讲述了android编程添加快捷方式(short)到手机桌面的方法。分享给大家供大家参考,具体如下: 权限 要在手机桌面上添加快捷方式,首先需要在manifes...

本文实例讲述了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程序设计有所帮助。

上一篇:

下一篇: