android 添加桌面快捷方式
、在桌面创建快捷方式方法:
方法一:通过长按某一个应用程序的图标在桌面上创建启动该应用程序的快捷方式。
这个方法安装完程序都用户都能实现。
方法二:在应用程序中构建一个Intent,然后以Broadcast的形式通知Launcher创建快捷方式。
先看Launcher的AndroidMainfest.xml文件中InstallShortcutReceiver的注册信息:
- <!--设置wallpapaer的activity -->
- <!-- Intent received used to install shortcuts from other applications -->
- <receiver
- android:name="com.android.launcher2.InstallShortcutReceiver"
- android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
- <intent-filter>
- <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
- </intent-filter>
- </receiver>
<!--设置wallpapaer的activity -->
<!-- Intent received used to install shortcuts from other applications -->
<receiver
android:name="com.android.launcher2.InstallShortcutReceiver"
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
<intent-filter>
<action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
</intent-filter>
</receiver>
所以向这个BroadcastReceiver发送广播,首先应用程序必须要 有com.android.launcher.permission.INSTALL_SHORTCUT权限,然后广播去的Intent的action设置为
com.android.launcher.action.INSTALL_SHORTCUT。
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.studio.android.ch10.ex1"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/ji" android:label="@string/app_name">
- <activity android:name=".UrgentCall"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="3" />
- <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
- </manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.studio.android.ch10.ex1"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/ji" android:label="@string/app_name">
<activity android:name=".UrgentCall"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
</manifest>
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Parcelable;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class UrgentCall extends Activity implements
- OnClickListener {
- Button police;
- Button fire;
- Intent directCall;
- private final String ACTION_ADD_SHORTCUT =
- "com.android.launcher.action.INSTALL_SHORTCUT";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- police = (Button)findViewById(R.id.police);
- fire = (Button)findViewById(R.id.firepolice);
- police.setOnClickListener(this);
- fire.setOnClickListener(this);
- directCall = new Intent(Intent.ACTION_CALL);
- }
- @Override
- public void onClick(View v) {
- Intent addShortcut =
- new Intent(ACTION_ADD_SHORTCUT);
- String numToDial = null;
- Parcelable icon = null;
- switch (v.getId()) {
- case R.id.police:
- numToDial = "110";
- icon = Intent.ShortcutIconResource.fromContext(
- this,R.drawable.jing);
- break;
- case R.id.firepolice:
- numToDial = "119";
- icon = Intent.ShortcutIconResource.fromContext(
- this,R.drawable.huo);
- break;
- default:
- break;
- }
- addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
- numToDial);
- directCall.setData(Uri.parse("tel://"+numToDial));
- addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
- directCall);
- addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
- icon);
- sendBroadcast(addShortcut);
- }
- }
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class UrgentCall extends Activity implements
OnClickListener { Button police;
Button fire;
Intent directCall;
private final String ACTION_ADD_SHORTCUT =
"com.android.launcher.action.INSTALL_SHORTCUT"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main); police = (Button)findViewById(R.id.police);
fire = (Button)findViewById(R.id.firepolice); police.setOnClickListener(this);
fire.setOnClickListener(this); directCall = new Intent(Intent.ACTION_CALL);
} @Override
public void onClick(View v) {
Intent addShortcut =
new Intent(ACTION_ADD_SHORTCUT);
String numToDial = null;
Parcelable icon = null;
switch (v.getId()) {
case R.id.police:
numToDial = "110";
icon = Intent.ShortcutIconResource.fromContext(
this,R.drawable.jing);
break;
case R.id.firepolice:
numToDial = "119";
icon = Intent.ShortcutIconResource.fromContext(
this,R.drawable.huo);
break;
default:
break;
}
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
numToDial);
directCall.setData(Uri.parse("tel://"+numToDial));
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
directCall);
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
icon);
sendBroadcast(addShortcut);
}
}
方法三:为应用程序组件注册一个符合特定条件的IntentFilter,然后就可以直接在Launcher的桌面上添加启动该组件的快捷方式了。
当我们在Home应用程序Launcher的桌面空白处长按触摸时,会出现一个对话框,提示选择要添加的桌面组件。当我们想把添加的快捷方式的Activity添加进这列时,只需要在这个Activity注册时添加一个Action为android.intent.action.CREATE_SHORTCUT的IntentFilter就可以。
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.studio.android.ch10.ex1"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/ji" android:label="@string/app_name">
- <activity android:name=".UrgentCall"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.CREATE_SHORTCUT" />
- </intent-filter>
- </activity>
- <activity android:name=".FireShortcut">
- <intent-filter>
- <action android:name="android.intent.action.CREATE_SHORTCUT" />
- </intent-filter>
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="3" />
- <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
- </manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.studio.android.ch10.ex1"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/ji" android:label="@string/app_name">
<activity android:name=".UrgentCall"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
</activity>
<activity android:name=".FireShortcut">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
</manifest>
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Parcelable;
- public class FireShortcut extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Intent addShortcut;
- //若是“添加快捷方式”的Action就初始化快捷方式的Intent
- if (getIntent().getAction()
- .equals(Intent.ACTION_CREATE_SHORTCUT)) {
- /*初始化添加快捷图标的Intent*/
- addShortcut = new Intent();
- addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
- "119");
- Parcelable icon = Intent.ShortcutIconResource.fromContext(
- this,R.drawable.huo);
- addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
- icon);
- Intent callFirePolice =
- new Intent(Intent.ACTION_CALL,Uri.parse("tel://119"));
- addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
- callFirePolice);
- /*设置Result*/
- //因为Action是由Launcher通过startActivityForResult这个方法发出的。
- setResult(RESULT_OK,addShortcut);
- } else {
- setResult(RESULT_CANCELED);
- }
- finish();
- }
- }
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable; public class FireShortcut extends Activity { @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent addShortcut;
//若是“添加快捷方式”的Action就初始化快捷方式的Intent
if (getIntent().getAction()
.equals(Intent.ACTION_CREATE_SHORTCUT)) { /*初始化添加快捷图标的Intent*/
addShortcut = new Intent();
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
"119"); Parcelable icon = Intent.ShortcutIconResource.fromContext(
this,R.drawable.huo);
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
icon); Intent callFirePolice =
new Intent(Intent.ACTION_CALL,Uri.parse("tel://119"));
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
callFirePolice); /*设置Result*/
//因为Action是由Launcher通过startActivityForResult这个方法发出的。
setResult(RESULT_OK,addShortcut);
} else {
setResult(RESULT_CANCELED);
}
finish();
}
}
这时列表中会有两个UrgentCall的选项,第二个就直接在桌面添加“拨打火警119”的快捷方式了。
- UrgentCall.rar (35.8 KB)
android 添加桌面快捷方式的更多相关文章
- Android 添加桌面快捷方式操作
/** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent(“com.android.launcher. ...
- Android添加桌面快捷方式的简单实现
核心代码如下: Button bn = (Button) findViewById(R.id.bn); // 为按钮的单击事件添加监听器 bn.setOnClickListener(new OnCli ...
- kailli添加桌面快捷方式
kailli添加桌面快捷方式 /usr/share/applications/xxx.desktop 注意大小写要与Name对应 [Desktop Entry] Version=1.0 Name=Tu ...
- Android -- 创建桌面快捷方式
代码 /** * * 返回添加到桌 ...
- (转)Android创建桌面快捷方式两种方法
[IT168技术]Android在桌面上生成快捷方式有两种情况,一种是直接在桌面直接生成;一种是长按桌面,在弹出的快捷菜单中生成. 谈谈在桌面上直接生成.个人觉得这个比较爽快,既然都是快捷方式了干嘛还 ...
- Android创建桌面快捷方式
在桌面上创建特定界面的快捷入口,icon和title根据请求参数命名.在网上收集的一些相关资 料,在使用intent发送广播的时候,一些型号的收集会有问题,如魅族MX,红米,以及华为,使用setCla ...
- Android 通过程序添加桌面快捷方式
原理:通过代码向 Launcher 中的广播接收者发送广播来创建快捷图标. 首先要声明的权限是: <!--添加图标的权限--> <uses-permission android:na ...
- Android中为你的应用程序添加桌面快捷方式
public void ShortCut(View view){ createDeskShortCut(this,getString(R.string.short_cut),R.drawable.up ...
- android添加桌面悬浮窗
1. 添加权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 2. ...
随机推荐
- Java 动态向 JTable 中添加数据
import java.awt.Toolkit; import javax.swing.SwingUtilities; import javax.swing.UIManager; import jav ...
- 【转】一种新型的Web缓存欺骗攻击技术
为了减少WEB响应时延并减小WEB服务器负担,现在WEB缓存技术已经用的非常普遍了,除了专门的CDN,负载均衡以及反向代理现在也会缓存一部分的网页内容.这里我要介绍一种WEB缓存欺骗攻击技术,这种攻击 ...
- 第一章 EL表达式常见用法
el最常用的几种使用场景: 从配置文件中读取属性 缺失值情况下,配置默认值 el内部字符串使用String的方法 三目运算符 正则表达式 注入系统属性(system properties) 调用系统原 ...
- struts2 18拦截器详解(五)
I18nInterceptor 该拦截器处理defaultStack第四的位置,是用来方便国际化的,如果说我们的一个Web项目要支持国际化的话,通常的做法是给定一个下拉框列出所支持的语言,当用户选择了 ...
- [leetcode]Binary Tree Preorder Traversal @ Python
原题地址:http://oj.leetcode.com/problems/binary-tree-preorder-traversal/ 题意:这题用递归比较简单.应该考察的是使用非递归实现二叉树的先 ...
- NYOJ-61 传纸条(一)
传纸条(一) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...
- linux用户管理中两个重要的“父子”配置文件
在Linux中主要通过用户配置文件来查看和修改用户信息,因此下面我们将介绍两个重要的用户配置文件,让你能够更好的hold住你的用户. 一:父文件/etc/passwd 1.查看配置文件/etc/pas ...
- /etc/rc.d/init.d/functions文件详细分析
/etc/rc.d/init.d/functions文件详细分析 functions这个脚本是给/etc/init.d里边的文件使用的(可理解为全局文件). 提供了一些基础的功能,看看里边究竟有些什么 ...
- T-SQL 之 自定义函数
和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且作为一个单元进行调用.UDF和存储过程的主要区别在于返回结果的方式. 使用UDF时可传入参数,但不可传出参数.输 ...
- git 使用流程(使用代码库github)
一:先在github 上注册账号,并创建一个项目: 二:mac 命令行-进入自己的工作空间 1:建立库 git init 2:初始化配置 git config --global user.na ...