android 桌面快捷方式,Android应用开发之(如何自动在桌面创建快捷方式)

一般来说在 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

第二种方式和第一种有些类似,不过我们不用广播的方式让给launcher创建,而是通过注册IntentFilter,由于“添加快捷方式”Action是 由Launcher通过startActivity-ForResult这一方法发出的,在Activity启动后把初始化的快捷方式 Intent返回给Launcher应用程序,设置结果值为RESULT_OK表示正常返回。

主要代码如下:

首先在xml中设置IntentFilter

复制代码创建核心代码:

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中是否已经有此快捷方式数据,如果有就不在创建。

主要代码如下:

/**

* 添加权限:

*

*/

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;

}

上述查询操作,需要具有以下权限:

注意通过程序创建的快捷方式不会随着程序卸载而自动删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值