首页 > 代码库 > 创建桌面快捷图标
创建桌面快捷图标
分析桌面程序的源码发现具有接收创建桌面快捷图标的广播接受,创建快捷突变即发送广播的方式来实现的。下面来分析创建桌面快捷图标的过程。
1. 在应用程序的第一个Activity,添加创建快捷图标的方法, installShortCut();
// 创建桌面快捷图标
private void intallShotCut() {// 定义广播通知桌面创建快捷图标
Intent intent = new Intent();
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");// 指定意图// 设置动作(快捷方式的名称、图标)
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "小护卫");
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.safe));// 设置开启意图
Intent homeIntent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, homeIntent);sendBroadcast(intent);// 发送创建快捷图标的广播
}
记得添加权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
2. 发现创建桌面快捷图标后并没有绑定打开我们的程序,什么原因呢?
因为桌面应用和我们的程序是不同的应用程序,说以不能使用显式意图,只能使用隐式意图。
桌面Activity的清单文件作如下配置:
<activity android:name="com.itheima.mobilesafe.activities.HomeActivity" ><intent-filter><action android:name="com.itheima.mobilesafe.home" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>
installShortCut();修改为:
// 创建桌面快捷图标
private void intallShotCut() {// 定义广播通知桌面创建快捷图标
Intent intent = new Intent();
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");// 指定意图// 设置动作(快捷方式的名称、图标)
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "小护卫");
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.safe));// 设置隐式开启意图
Intent homeIntent = new Intent();
homeIntent.setAction("com.itheima.mobilesafe.home");
homeIntent.addCategory("android.intent.category.DEFAULT");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, homeIntent);sendBroadcast(intent);// 发送创建快捷图标的广播
}
3. 但是有一个小BUG,每次进入程序都会在桌面创建一个快捷图标。记录住是否第一次运行程序
最终代码清单如下:
// 创建桌面快捷图标
private void intallShotCut() {boolean installedshortcut = sp.getBoolean("installedshortcut", false);if(installedshortcut) {
return;
}// 定义广播通知桌面创建快捷图标
Intent intent = new Intent();
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");// 指定意图// 设置动作(快捷方式的名称、图标)
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "小护卫");
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.safe));// 设置隐式开启意图
Intent homeIntent = new Intent();
homeIntent.setAction("com.itheima.mobilesafe.home");
homeIntent.addCategory("android.intent.category.DEFAULT");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, homeIntent);sendBroadcast(intent);// 发送创建快捷图标的广播
// 保存安装快捷图标信息
Editor editor = sp.edit();editor.putBoolean("installedshortcut", true);editor.commit();}
桌面Activity的清单文件作如下配置:
<activity android:name="com.itheima.mobilesafe.activities.HomeActivity" ><intent-filter><action android:name="com.itheima.mobilesafe.home" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>
记得添加权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。