zoukankan      html  css  js  c++  java
  • Android 创建桌面快捷方式

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

     

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

      需要权限

      和要点击快捷方式对应的那个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表中,所以可以查询此表得到,

      需要权限

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

    以下是代码片段:

    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>
                    <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>
            </activity>
    
        </application>
         <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
          <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
    </manifest>
    

      

     


     
  • 相关阅读:
    如何创建数据库及表
    验证视图状态MAC失败解决方案
    ELK(elasticsearch+logstash+kibana)实现Java分布式系统日志分析架构
    使用Servlet3.0提供的API实现文件上传
    CentOS 6.4下安装MySQL 5.6.22
    CentOS下安装MySQL-server-5.6
    linux下彻底卸载mysql 图解教程
    表白用,有需要的可以转
    Eclipse常用快捷键
    DAO和DTO的区别
  • 原文地址:https://www.cnblogs.com/DswCnblog/p/2687729.html
Copyright © 2011-2022 走看看