天天看点

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>

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

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

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

[java] view

plaincopy

import android.app.activity;  

import android.content.contentresolver;  

import android.content.intent;  

import android.content.intent.shortcuticonresource;  

import android.database.cursor;  

import android.graphics.bitmapfactory;  

import android.net.uri;  

import android.os.bundle;  

public class addshortcutactivity extends activity {  

    /** called when the activity is first created. */  

    @override  

    public void oncreate(bundle savedinstancestate) {  

        super.oncreate(savedinstancestate);  

        setcontentview(r.layout.main);  

            boolean  flag =ifaddshortcut();//如果已经创建,则不需要在创建  

            if(flag==false){  

                addshortcut();  

            }  

    }  

    public void addshortcut(){  

        intent shortcut = new intent("com.android.launcher.action.install_shortcut");  

        // 设置属性  

        shortcut.putextra(intent.extra_shortcut_name, getresources().getstring(r.string.app_name));  

        shortcuticonresource iconres = intent.shortcuticonresource.fromcontext(addshortcutactivity.this, r.drawable.icon);  

        shortcut.putextra(intent.extra_shortcut_icon,iconres);  

        // 是否允许重复创建  

        shortcut.putextra("duplicate", false);   

        intent intent = new intent(intent.action_main);  

        intent.setflags(intent.flag_activity_reset_task_if_needed);  

        intent.addflags(intent.flag_activity_launched_from_history);  

        intent.addcategory(intent.category_launcher);  

        intent.setclass(addshortcutactivity.this, addshortcutactivity.class);  

        // 设置启动程序  

        system.out.println("createicon");  

        shortcut.putextra(intent.extra_shortcut_intent, intent);  

        addshortcutactivity.this.sendbroadcast(shortcut);  

   public  boolean  ifaddshortcut(){  

      boolean isinstallshortcut = false ;    

        final contentresolver cr = addshortcutactivity.this.getcontentresolver();    

        //本人的2.2系统是”com.android.launcher2.settings”,网上见其他的为"com.android.launcher.settings"  

        final string authority = "com.android.launcher2.settings";    

        final uri content_uri = uri.parse("content://" +    

                         authority + "/favorites?notify=true");  

        cursor c = cr.query(content_uri,    

        new string[] {"title","iconresource" },    

        "title=?",    

        new string[] {getstring(r.string.app_name ) }, null);//xxx表示应用名称。    

                if(c!=null && c.getcount()>0){    

            isinstallshortcut = true ;    

            system.out.println("已创建");  

        }    

        return isinstallshortcut ;    

}  

[html] view

<?xml version="1.0" encoding="utf-8"?>  

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  

      package="com.shao.add"  

      android:versioncode="1"  

      android:versionname="1.0">  

    <uses-sdk android:minsdkversion="8" />  

    <application android:icon="@drawable/icon" android:label="@string/app_name">  

        <activity android:name=".addshortcutactivity"  

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

        </activity>  

    </application>  

     <uses-permission android:name="com.android.launcher.permission.read_settings"/>   

      <uses-permission android:name="com.android.launcher.permission.install_shortcut"/>  

</manifest>  

继续阅读