android桌面快捷网页,Android向桌面添加快捷方式,使其指向特定的网页

今天遇到一个需求,就是向桌面添加一个快捷方式,使点击时链接到特定的网页。网上找了一下,看到这篇文章

受其启发,实现了该功能。

public void

addShortcut(Parcelable icon, String name, Uri uri){

Intent intentAddShortcut = new

Intent(ACTION_ADD_SHORTCUT);

//添加名称

intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,

name);

//添加图标

intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,

icon);

//设置Launcher的Uri数据

Intent intentLauncher = new Intent();

intentLauncher.setData(uri);

//添加快捷方式的启动方法

intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,

intentLauncher);

sendBroadcast(intentAddShortcut);

}

当然,你还需要添加一个permission

"com.android.launcher.permission.INSTALL_SHORTCUT"

/>

这里第一个参数Parcelable类型的icon如何获得呢,以下举个例子从Drawable文件夹中获取图片。

Parcelable icon =

Intent.ShortcutIconResource.fromContext(this,

R.drawable.icon);

转:http://blog.csdn.net/llfjfz/article/details/5752017

如何实现添加快捷图标?

Launcher为了让其他应用程序能够定制自己的快捷图标,就注册了一个BroadcastReceiver专门接收其他应用程序发来的快捷图标

定制信息。所以只需要根据该BroadcastReceiver构造出相对应的Intent并装入我们的定制信息,最后调用sendBroadcast方

法就可以创建一个快捷图标了。那么,要构造怎样一个Intent才会被Launcher的BroadcastReceiver接收呢?我们还是先来看看这

个BroadcastReceiver的注册信息吧。

下面是Launcher的AndroidManifest.xml文件中Install-ShortcutReceiver的注册信息。

android:name=”.InstallShortcutReceiver”

android:permission=

“com.android.launcher.permission.INSTALL_SHORTCUT”>

<intent-filter>

intent-filter>

如何向这个 BroadcastReceiver 发送广播,设置如下:

首先应用程序必须要有com.android.launcher.permission.INSTALL_SHORTCUT权限;

然后广播出去的Intent的action设置com.android.launcher.action.INSTALL_SHORTCUT;

这样广播就可以发送给Launcher的InstallShortcutReceiver了;

而快捷图标的信息则是以附加信息的形式存储在广播出去的Intent对象中的,包括有图标、显示的名称以及用来启动目标组件的Intent这三种信息。我们可以通过putExtra的重载方法,通过指定相应的键值,将这些信息放到附加信息的Bundle对象中。

列出了各种快捷图标信息相对应的键值和数据类型:

a4c26d1e5885305701be709a3d33442f.png

下面举些具体的例子,如下:

private final String ACTION_ADD_SHORTCUT =

“com.android.launcher.action.INSTALL_SHORTCUT”;

Intent addShortcut =new Intent(ACTION_ADD_SHORTCUT);

String numToDial = null;

Parcelable icon = null;

numToDial = “110″;

icon =

Intent.ShortcutIconResource.fromContext(this,R.drawable.jing);

//numToDial = “119″;

//icon =

Intent.ShortcutIconResource.fromContext(this,R.drawable.huo);

//图标

addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,icon);

//名称

addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,numToDial);

//启动目标组件的Intent

Intent directCall;

directCall.setData(Uri.parse(“tel://”+numToDial));

addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,directCall);

sendBroadcast(addShortcut);

上面的程序运行后的界面如下:

a4c26d1e5885305701be709a3d33442f.png

总结说明

只要知道这些信息后,你就可以轻而易举的为应用程序添加快捷图标。

在Launcher 添加应用程序的快捷图标

当我们在Home应用程序Launcher的桌面空白处长按触摸时,会出现一个对话框,提示选择要添加的桌面组件,如下图所示:

a4c26d1e5885305701be709a3d33442f.png

这里出现了快捷图标的选项。选择添加快捷图标后,会弹出一个对话框,显示出了可添加快捷图标的Activity所属的应用程序的图标和名称的列表。当我们想把添加快捷图标的Activity添加到这一列表时,只需要在这个Activity注册时添加一个Action为android.intent.action.

CREATE_SHORTCUT的IntentFilter就可以,如下面所示:

a4c26d1e5885305701be709a3d33442f.png

这样,在这个Activity列表里,就有了你的应用程序的图标和名称。有时候,我们可以在应用程序中定义一个直接在桌面创建快捷图标的Activity,可以简化用户操作,例子如下:

a4c26d1e5885305701be709a3d33442f.png

在类FireShortcut中,重新实现onCreate方法。首先在以上代码的第 16

行对启动此Activity的Action进行判断,若是“添加快捷图标”的Action就初始化快捷图标的Intent——设置名称、图标及Intent。由于“添加快捷图标”Action是由Launcher通startActivityForResult这一方法发出的,所以为了能够在当前Activity退出后把初始化的快捷图标Intent返回给Launcher应用程序,就在第35行调

用了setResult这一方法,设置结果值为RESULT_OK表示正常返回,而快捷图标的Intent则作为结果Intent返回给

Launcher,然后调用finish()方法结束Activity。若Action直接不匹配,设置结果值为RESULT_CANCELED表示取

消,然后退出。

定义完了类FireShortcut以后,不要忘了还要在AndroidManifest.xml中对其进行注册声明。另外为了使该Activity能够被添加到桌面的快捷图标的列表中,还要添加相应的IntentFilter。

a4c26d1e5885305701be709a3d33442f.png

现在,在桌面的添加快捷图标的Activity的列表中,就出现了FireShortcut选项,单击此图标,就会直接在桌面上添加一个“拨打火警119”的快捷图标了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值