当前位置:操作系统 > 安卓/Android >>

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

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

 

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 ;   

    } 

 

 

<?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> 

  &nb

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,