android--创建快捷方式和判断是否已经创建

一般android应用程序安装完成后是不会自动创建快捷方式的,所以可以自己在程序启动时实现。

 需要权限  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>

和要点击快捷方式对应的那个activity的属性。

        <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"></action>
            </intent-filter>

如何判断快捷方式是否已经创建的方法,因为快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中,所以可以查询此表得到,

需要权限 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/> 

下面给个例子分享给各位:

[java] view
plain
copy

  1. import android.app.Activity;  
  2. import android.content.ContentResolver;  
  3. import android.content.Intent;  
  4. import android.content.Intent.ShortcutIconResource;  
  5. import android.database.Cursor;  
  6. import android.graphics.BitmapFactory;  
  7. import android.net.Uri;  
  8. import android.os.Bundle;  
  9. public class AddShortCutActivity extends Activity {  
  10.     /** Called when the activity is first created. */  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.             boolean  flag =IfaddShortCut();//如果已经创建,则不需要在创建  
  16.             if(flag==false){  
  17.                 addShortCut();  
  18.             }  
  19.     }  
  20.     public void addShortCut(){  
  21.         Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");  
  22.         // 设置属性  
  23.         shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getResources().getString(R.string.app_name));  
  24.         ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(AddShortCutActivity.this, R.drawable.icon);  
  25.         shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON,iconRes);  
  26.           
  27.         // 是否允许重复创建  
  28.         shortcut.putExtra("duplicate", false);   
  29.         Intent intent = new Intent(Intent.ACTION_MAIN);  
  30.         intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);  
  31.         intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);  
  32.         intent.addCategory(Intent.CATEGORY_LAUNCHER);  
  33.         intent.setClass(AddShortCutActivity.this, AddShortCutActivity.class);  
  34.         // 设置启动程序  
  35.         System.out.println("createIcon");  
  36.         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);  
  37.         AddShortCutActivity.this.sendBroadcast(shortcut);  
  38.     }  
  39.    public  boolean  IfaddShortCut(){  
  40.       boolean isInstallShortcut = false ;    
  41.         final ContentResolver cr = AddShortCutActivity.this.getContentResolver();    
  42.         //本人的2.2系统是”com.android.launcher2.settings”,网上见其他的为"com.android.launcher.settings"  
  43.         final String AUTHORITY = "com.android.launcher2.settings";    
  44.         final Uri CONTENT_URI = Uri.parse("content://" +    
  45.                          AUTHORITY + "/favorites?notify=true");  
  46.         Cursor c = cr.query(CONTENT_URI,    
  47.         new String[] {"title","iconResource" },    
  48.         "title=?",    
  49.         new String[] {getString(R.string.app_name ) }, null);//XXX表示应用名称。    
  50.                 if(c!=null && c.getCount()>0){    
  51.             isInstallShortcut = true ;    
  52.             System.out.println("已创建");  
  53.         }    
  54.         return isInstallShortcut ;    
  55.     }  
  56. }  

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="com.shao.add"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <uses-sdk android:minSdkVersion="8" />  
  7.   
  8.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  9.         <activity android:name=".AddShortCutActivity"  
  10.                   android:label="@string/app_name">  
  11.             <intent-filter>  
  12.                 <action android:name="android.intent.action.MAIN" />  
  13.                 <category android:name="android.intent.category.LAUNCHER" />  
  14.             </intent-filter>  
  15.               <intent-filter>  
  16.                 <action android:name="android.intent.action.CREATE_SHORTCUT"></action>  
  17.             </intent-filter>  
  18.         </activity>  
  19.   
  20.     </application>  
  21.      <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>   
  22.       <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>  
  23. </manifest>  
时间: 2024-09-21 22:47:11

android--创建快捷方式和判断是否已经创建的相关文章

在Windows桌面创建快捷方式

注:偶在Windows ADV 2000,C++ Builder 6.0下编译通过. :D API提供了一个叫做IShellLink的COM接口允许我们创建快捷方式.为在桌面创建快捷方式,我们创建一个IShellLink对象,设置它的属性,然后把这个link保存到desktop目录. 下面的例子代码演示了怎样创建一个快捷方式.在这个例子里,这个快捷方式保存在C:\根目录下. #define NO_WIN32_LEAN_AND_MEAN#include <shlobj.h>#include &l

C#创建快捷方式方法简介

本文主要介绍C#创建快捷方式,包括介绍使 用 WSH 创建快捷方式等方面. C#创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这 项工作却为程序员带来不少麻烦..net 没有提供简便直接的创建快捷方式的方法 ,那么在 .NET 中我们如何为应用程序创建快捷方式呢? 1. C#创建快捷方式 C#创建快捷方式实质上是一个扩展名为 .LNK 的文件.右击一个快捷方式文件 并选择属性,跳到快捷方式选项卡: 你可以看到一个快捷方式包含如下数据: ◆快捷方式的名字 ◆快捷方式所指向

解析android创建快捷方式会启动两个应用的问题_Android

接下来讲一种完美的方案.因为第一个界面是欢迎界面,所以快捷方式启动的界面也是欢迎界面,刚开始就怀疑快捷方式创建的代码有问题,但不知道问题出在哪儿.猜测可能会是快捷方式的错误导致系统创建两个应用,就也是同一个应用会有两个PID,结果在控制台查看打印的LOG,不同方式启动的LOG如下: 复制代码 代码如下: 09-22 09:39:11.929: INFO/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN c

android创建快捷方式来打开应用中特定的Activity

有段时间没有记录过了. 这也是换工作以后写的第一篇吧,现在公司是在做sdk的接入,对于我来说,能接触到更多不同于以前应用的很多东西,提供自己的服务给更多的人. 虽然是只是进行迭代,但是我觉得对我也有很大的帮助. 现在sdk应设计的要求要在使用了我们sdk的游戏在安装打开以后就要创建一个快捷方式,然后这个快捷方式不是用来打开应用,是为了进行静默下载所创建的,但是我们知道android里边快捷方式是与应用绑定的,他只能打开Activity,我一开始的设想是我捕捉到快捷方式的点击事件,然后开一个ser

使用程序创建Android桌面快捷方式

下面是使用程序创建Android桌面快捷方式的实例代码: public static void addShortcut(Context context) { String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; // 快捷方式要启动的包 Intent intent = gotoWhere(context); // 设置快捷方式的参数 Intent shortcutIntent =

Android通过应用程序创建快捷方式的方法_Android

本文实例讲述了Android通过应用程序创建快捷方式的方法.分享给大家供大家参考.具体如下: Android 快捷方式是桌面最基本的组件.它用于直接启动某一应用程序的某个组件. 一般情况下,可以在Launcher的应用程序列表上,通过长按某一个应用程序的图标在左面上创建改该应用程序的快捷方式.另外,还可以通过两种方式在桌面上添加快捷方式: 一:在应用程序中创建一个Intent,然后以Broadcast的形式通知Launcher创建一个快捷方式. 二:为应用程序的组件注册某一个符合特定条件的Int

Android中创建快捷方式及删除快捷方式实现方法_Android

/** * * 创建快捷方式 * @param map 快捷方式图标 * @param appName 快捷方式标题 * @param appUrl 快捷方式打开的地址 * @param iconUrl 快捷方式图标地址 * * */ public static void createShortcut(Context activity ,Bitmap map ,String appName ,String appUrl ,String iconUrl){ Intent shortcut = ne

android编程实现为程序创建快捷方式的方法_Android

本文实例讲述了android编程实现为程序创建快捷方式的方法.分享给大家供大家参考,具体如下: /** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.st

android编程实现为程序创建快捷方式的方法

本文实例讲述了android编程实现为程序创建快捷方式的方法.分享给大家供大家参考,具体如下: /** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.st