码迷,mamicode.com
首页 > 其他好文 > 详细

创建桌面快捷图标

时间:2014-06-27 22:49:51      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:android   style   color   get   使用   width   

分析桌面程序的源码发现具有接收创建桌面快捷图标的广播接受,创建快捷突变即发送广播的方式来实现的。下面来分析创建桌面快捷图标的过程。

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"/>

创建桌面快捷图标,布布扣,bubuko.com

创建桌面快捷图标

标签:android   style   color   get   使用   width   

原文地址:http://www.cnblogs.com/loveandroid/p/3811125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!