、在桌面创建快捷方式方法:

方法一:通过长按某一个应用程序的图标在桌面上创建启动该应用程序的快捷方式。

这个方法安装完程序都用户都能实现。

方法二:在应用程序中构建一个Intent,然后以Broadcast的形式通知Launcher创建快捷方式。

先看Launcher的AndroidMainfest.xml文件中InstallShortcutReceiver的注册信息:

  1. <!--设置wallpapaer的activity -->
  2. <!-- Intent received used to install shortcuts from other applications -->
  3. <receiver
  4. android:name="com.android.launcher2.InstallShortcutReceiver"
  5. android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
  6. <intent-filter>
  7. <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
  8. </intent-filter>
  9. </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。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.studio.android.ch10.ex1"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <application android:icon="@drawable/ji" android:label="@string/app_name">
  7. <activity android:name=".UrgentCall"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. <category android:name="android.intent.category.LAUNCHER" />
  12. </intent-filter>
  13. </activity>
  14. </application>
  15. <uses-sdk android:minSdkVersion="3" />
  16. <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  17. </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>

  1. import android.app.Activity;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.os.Parcelable;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;
  9. public class UrgentCall extends Activity implements
  10. OnClickListener {
  11. Button police;
  12. Button fire;
  13. Intent directCall;
  14. private final String ACTION_ADD_SHORTCUT =
  15. "com.android.launcher.action.INSTALL_SHORTCUT";
  16. @Override
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.main);
  20. police = (Button)findViewById(R.id.police);
  21. fire = (Button)findViewById(R.id.firepolice);
  22. police.setOnClickListener(this);
  23. fire.setOnClickListener(this);
  24. directCall = new Intent(Intent.ACTION_CALL);
  25. }
  26. @Override
  27. public void onClick(View v) {
  28. Intent addShortcut =
  29. new Intent(ACTION_ADD_SHORTCUT);
  30. String numToDial = null;
  31. Parcelable icon = null;
  32. switch (v.getId()) {
  33. case R.id.police:
  34. numToDial = "110";
  35. icon = Intent.ShortcutIconResource.fromContext(
  36. this,R.drawable.jing);
  37. break;
  38. case R.id.firepolice:
  39. numToDial = "119";
  40. icon = Intent.ShortcutIconResource.fromContext(
  41. this,R.drawable.huo);
  42. break;
  43. default:
  44. break;
  45. }
  46. addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
  47. numToDial);
  48. directCall.setData(Uri.parse("tel://"+numToDial));
  49. addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
  50. directCall);
  51. addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
  52. icon);
  53. sendBroadcast(addShortcut);
  54. }
  55. }
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就可以。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.studio.android.ch10.ex1"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <application android:icon="@drawable/ji" android:label="@string/app_name">
  7. <activity android:name=".UrgentCall"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. <category android:name="android.intent.category.LAUNCHER" />
  12. </intent-filter>
  13. <intent-filter>
  14. <action android:name="android.intent.action.CREATE_SHORTCUT" />
  15. </intent-filter>
  16. </activity>
  17. <activity android:name=".FireShortcut">
  18. <intent-filter>
  19. <action android:name="android.intent.action.CREATE_SHORTCUT" />
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. <uses-sdk android:minSdkVersion="3" />
  24. <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  25. </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>
  1. import android.app.Activity;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.os.Parcelable;
  6. public class FireShortcut extends Activity {
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. Intent addShortcut;
  11. //若是“添加快捷方式”的Action就初始化快捷方式的Intent
  12. if (getIntent().getAction()
  13. .equals(Intent.ACTION_CREATE_SHORTCUT)) {
  14. /*初始化添加快捷图标的Intent*/
  15. addShortcut = new Intent();
  16. addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
  17. "119");
  18. Parcelable icon = Intent.ShortcutIconResource.fromContext(
  19. this,R.drawable.huo);
  20. addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
  21. icon);
  22. Intent callFirePolice =
  23. new Intent(Intent.ACTION_CALL,Uri.parse("tel://119"));
  24. addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
  25. callFirePolice);
  26. /*设置Result*/
  27. //因为Action是由Launcher通过startActivityForResult这个方法发出的。
  28. setResult(RESULT_OK,addShortcut);
  29. } else {
  30. setResult(RESULT_CANCELED);
  31. }
  32. finish();
  33. }
  34. }
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”的快捷方式了。

android 添加桌面快捷方式的更多相关文章

  1. Android 添加桌面快捷方式操作

    /** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent(“com.android.launcher. ...

  2. Android添加桌面快捷方式的简单实现

    核心代码如下: Button bn = (Button) findViewById(R.id.bn); // 为按钮的单击事件添加监听器 bn.setOnClickListener(new OnCli ...

  3. kailli添加桌面快捷方式

    kailli添加桌面快捷方式 /usr/share/applications/xxx.desktop 注意大小写要与Name对应 [Desktop Entry] Version=1.0 Name=Tu ...

  4. Android -- 创建桌面快捷方式

    代码                                                                                    /** * * 返回添加到桌 ...

  5. (转)Android创建桌面快捷方式两种方法

    [IT168技术]Android在桌面上生成快捷方式有两种情况,一种是直接在桌面直接生成;一种是长按桌面,在弹出的快捷菜单中生成. 谈谈在桌面上直接生成.个人觉得这个比较爽快,既然都是快捷方式了干嘛还 ...

  6. Android创建桌面快捷方式

    在桌面上创建特定界面的快捷入口,icon和title根据请求参数命名.在网上收集的一些相关资 料,在使用intent发送广播的时候,一些型号的收集会有问题,如魅族MX,红米,以及华为,使用setCla ...

  7. Android 通过程序添加桌面快捷方式

    原理:通过代码向 Launcher 中的广播接收者发送广播来创建快捷图标. 首先要声明的权限是: <!--添加图标的权限--> <uses-permission android:na ...

  8. Android中为你的应用程序添加桌面快捷方式

    public void ShortCut(View view){ createDeskShortCut(this,getString(R.string.short_cut),R.drawable.up ...

  9. android添加桌面悬浮窗

    1. 添加权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 2. ...

随机推荐

  1. MySQL运行状态show status中文详解

    状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务 ...

  2. OTL翻译(10) -- OTL的流缓冲池

    OTL的流缓冲池 一般来讲,流一般作为一个局部的变量被使用,当使用完毕后就立刻关闭,如果需要再次使用就需要再次的声明变量,如此循环.OTL流的缓冲池(内存池)是一个解决以往的流性能低下的一个机制.当流 ...

  3. 第十一章 springboot + mongodb(简单查询)

    1.mongodb在mac上的安装 下载mongodb,https://www.mongodb.org/ 解压缩到一个指定文件夹,如:/Users/enniu1/Desktop/zjg/mongodb ...

  4. 微信小程序Nginx环境配置

    环境配置概述 主要内容: SSL免费证书申请步骤 Nginx HTTPS 配置 TLS 1.2 升级过程 微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申 ...

  5. (转)看懂UML类图和时序图

    从一个示例开始 请看以下这个类图,类之间的关系是我们需要关注的: 车的类图结构为<<abstract>>,表示车是一个抽象类: 它有两个继承类:小汽车和自行车:它们之间的关系为 ...

  6. DotNetBar中dotNetBarManager设置窗口 实现单文档视图界面

    本人想设计一个但文档视图的界面: |--------------------------------------------------------------- |   Ribbon Bar |-- ...

  7. 解决报错"Your security system have blocked an application with expired or not yet valid certificate from running"

    方法如下: Go to Control Panel Java in the Security tab click the "Edit Site List-" button clic ...

  8. 再谈javascript图片预加载技术

    图片预加载技术的典型应用: 如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展 ...

  9. vue-router 懒加载优化

    一.路由懒加载 1.先安装 babel 动态引入插件 npm install --save-dev babel-plugin-syntax-dynamic-import 2.修改router/inde ...

  10. 【leetcode】 9. palindrome number

    @requires_authorization @author johnsondu @create_time 2015.7.13 9:48 @url [palindrome-number](https ...