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程序设计有所帮助。