• Android创建和删除桌面快捷方式


    Android创建和删除桌面快捷方式

    有同学方反馈创建快捷方式后,点击快捷方式后不能启动程序或者提示"未安装程序",貌似是新的rom在快捷方式这块做过修改(由于此文是11年5月所出,估计应该是2.0或2.1的rom),现已修正,HTC G11 2.3.5rom测试通过.

    1,判断是否已经创建了快捷方式(在某些机型中需要判断)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private boolean hasShortcut()
    {
            boolean isInstallShortcut = false;
            final ContentResolver cr = activity.getContentResolver();
            final String AUTHORITY ="com.android.launcher.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[] {mapViewActivity.getString(R.string.app_name).trim()}, null);
            if(c!=null && c.getCount()>0){
                isInstallShortcut = true ;
            }
            return isInstallShortcut ;
        }

    2, 创建

    1
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    /**
         * 为程序创建桌面快捷方式
         */ 
        private void addShortcut(){ 
            Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
                   
            //快捷方式的名称 
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); 
            shortcut.putExtra("duplicate", false); //不允许重复创建 
     
            /****************************此方法已失效*************************/
            //ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName()); 
            //shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));    
         /******************************end*******************************/
         Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
         shortcutIntent.setClassName(this, this.getClass().getName());
         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
     
            //快捷方式的图标 
            ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); 
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); 
                   
            sendBroadcast(shortcut); 
        

      

    3, 删除

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <strong>    /**
         * 删除程序的快捷方式
         */ 
        private void delShortcut(){ 
            Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT"); 
                   
            //快捷方式的名称 
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); 
            String appClass = this.getPackageName() + "." +this.getLocalClassName(); 
            ComponentName comp = new ComponentName(this.getPackageName(), appClass); 
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); 
                   
            sendBroadcast(shortcut); 
                   
        
    </strong>

    3, 声明权限

    在AndroidManifest.xml 文件中声明 创建和删除快捷方式时声明权限

    1
    2
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

    【转载】http://www.cnblogs.com/-OYK/archive/2011/05/31/2064797.html

  • 相关阅读:
    数据结构与算法 ||设计模式
    前端页面知识点
    easyui的dialog中的输入框在关闭后如何清空输入框中的内容
    设计模式之单例模式(通俗易懂,超详细)
    分布式锁--Java1234
    spring cloud Alibaba
    easyui
    SQL查询最大或最新的一条数据
    java中的异常(exception、throw、throws、try···catch)
    git error: The following untracked working tree files would be overwritten by merge:
  • 原文地址:https://www.cnblogs.com/jidan/p/3432916.html
Copyright © 2020-2023  润新知