Android应用开发之(如何自动在桌面创建快捷方式)
来源:互联网 发布:稳定性测试软件 编辑:程序博客网 时间:2024/06/05 02:29
Android Developer:
一般来说在 Android 中添加快捷方式的有以下两种:
在launcher的应用程序列表上,长按某一应用程序图标创建快捷方式到桌面
在桌面上长按在弹出框中选择快捷方式->应用程序->将添加快捷方式的程序
那么能不能在应用安装时自动将应用的快捷入口添加到桌面呢? 本文给大家分享一下相关的经验?
桌面是由launcher来控制的,所以我们可以通过下面两种方式来实现快捷方式的自动创建:
通过向launcher发送Broadcast让launcher创建快捷方式
为应用程序的组件注册某一个符合特定条件的IntentFilter,然后可以直接在Launcher的桌面添加启动该组件的快捷方式。
第一种方式:
/**
* 添加快捷方式到桌面 要点:
* 1.给Intent指定action="com.android.launcher.INSTALL_SHORTCUT"
* 2.给定义为Intent.EXTRA_SHORTCUT_INENT的Intent设置与安装时一致的action(必须要有)
* 3.添加权限:com.android.launcher.permission.INSTALL_SHORTCUT
*/
private void addShortcutToDesktop() {
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
// 不允许重建
shortcut.putExtra("duplicate", false);
// 设置名字
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,this.getString(R.string.app_name));
// 设置图标
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this,
R.drawable.ic_launcher));
// 设置意图和快捷方式关联程序
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent(this, this.getClass()).setAction(Intent.ACTION_MAIN));
// 发送广播
sendBroadcast(shortcut);
}
当快捷方式创建成功后,launcher将通过toast的方式提示快捷方式创建成功,其中通过
shortCutIntent.putExtra("duplicate", false);设置不能重复创建,如果快捷方式已经创建则提示快捷方式已经创建
注意如果要让上述代码能成功运行,我们还需要设置Uses permission<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
第二种方式和第一种有些类似,不过我们不用广播的方式让给launcher创建,而是通过注册IntentFilter,由于“添加快捷方式”Action是 由Launcher通过startActivity-ForResult这一方法发出的,在Activity启动后把初始化的快捷方式 Intent返回给Launcher应用程序,设置结果值为RESULT_OK表示正常返回。
主要代码如下:
首先在xml中设置IntentFilter<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
复制代码创建核心代码:
if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {
Intent shortcut = new Intent(Intent.ACTION_CREATE_SHORTCUT);
// 不允许重建
shortcut.putExtra("duplicate", false);
// 设置名字
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
this.getString(R.string.app_name));
// 设置图标
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this,
R.drawable.ic_launcher));
// 设置意图和快捷方式关联的程序
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
new Intent(this, this.getClass()));
//将结果返回到launcher
setResult(RESULT_OK, intent);
}
在launcher中我们运行程序就可以将快捷方式创建在桌面上。
通过上述方式可以自动将快捷方式创建到桌面上,但是每次运行程序时都会将快捷方式创建到桌面上,下面我们将通过程序判断快捷方式是否已经创建到桌面上了,基本思路是:由于快捷方式launcher管理的,我们可以通过查看launcher中是否已经有此快捷方式数据,如果有就不在创建。
主要代码如下:/**
* 添加权限:<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
*
* @return
*/
private boolean hasInstallShortcut() {
boolean hasInstall = false;
final String AUTHORITY = "com.android.launcher.settings";
Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
+ "/favorites?notify=true");
Cursor cursor = this.getContentResolver().query(CONTENT_URI,
new String[] { "title", "iconResource" }, "title=?",
new String[] { this.getString(R.string.app_name) }, null);
if (cursor != null && cursor.getCount() > 0) {
hasInstall = true;
}
return hasInstall;
}
上述查询操作,需要具有以下权限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"></uses-permission>
注意通过程序创建的快捷方式不会随着程序卸载而自动删除。
- Android应用开发之(如何自动在桌面创建快捷方式)
- Android应用开发之(如何自动在桌面创建快捷方式)
- Android 为应用创建多个桌面快捷方式,可在卸载时自动删除桌面快捷方式
- 如何自动在桌面创建快捷方式
- Android开发:应用启动后自动创建桌面快捷方式(三星机常见)
- Android为应用在桌面创建快捷方式
- android应用开发之桌面快捷方式
- [Android] Android应用启动后自动创建桌面快捷方式
- Android笔记:Android应用启动后自动创建桌面快捷方式
- android 应用创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android在桌面创建快捷方式
- Android开发:为指定的应用创建桌面快捷方式
- android开发步步为营之49:创建APP桌面快捷方式
- 2_进制及进制转换
- block语法详细讲解
- 94. Binary Tree Inorder Traversal
- 一步一步教你做ios推送
- ecshop 模板标签
- Android应用开发之(如何自动在桌面创建快捷方式)
- VARIANT的使用方法
- LinkLists 链表中返回倒数第n个元素 @CareerCup
- 网络子系统85_inet协议族-l3向上
- Java缓存机制
- solr大量索引信息导致搜索变慢
- NEFU 2 猜想
- smart mobile with vehicle
- C实现的泛型栈