问题解决了  
static String getAuthorityFromPermission(Context context, String permission){
    if (permission == null) return null;
    List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
    if (packs != null) {
        for (PackageInfo pack : packs) { 
            ProviderInfo[] providers = pack.providers; 
            if (providers != null) { 
                for (ProviderInfo provider : providers) { 
                    if (permission.equals(provider.readPermission)) return provider.authority;
                    if (permission.equals(provider.writePermission)) return provider.authority;
                } 
            }
        }
    }
    return null;
}

解决方案 »

  1.   

    /**
     * 创建快捷方式
     * 
     * **/
    private void createShorcut() {

    if (!hasShortCut(this)) {//判断快捷方式是否已经创建
    String ACTION_ADD_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
    Intent addShortcut = new Intent(ACTION_ADD_SHORTCUT);
    Parcelable icon = Intent.ShortcutIconResource.fromContext(this,// 快捷方式图片
    R.drawable.ic_launcher);
    addShortcut.putExtra("duplicate", false); // 不允许重复创建
    addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "居丫");// 快捷方式名称
    addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
    getApplicationContext(), WelcomeActivity.class));// 运行的程序主入口
    sendBroadcast(addShortcut);
    } }
    /*
     * 判断快捷方式是否已经创建
     * 
     * */
    public static boolean hasShortCut(Context context) { 
            String url = ""; 
            System.out.println(getSystemVersion()); 
            if(getSystemVersion() < 8){ //判断如果系统版本小于2.2的
                url = "content://com.android.launcher.settings/favorites?notify=true"; 
            }else{ //判断如果系统版本小大于2.2的
                url = "content://com.android.launcher2.settings/favorites?notify=true"; 
            } 
            
            ContentResolver resolver = context.getContentResolver(); 
            Cursor cursor = resolver.query(Uri.parse(url), null, "title=?", 
                            new String[] {context.getString(R.string.app_name)}, null); 
     
            if (cursor != null && cursor.moveToFirst()) { 
                    cursor.close(); 
                    return true; 
            } 
     
            return false; 
        } 
    private static int getSystemVersion(){ //获取系统版本
            return android.os.Build.VERSION.SDK_INT; 
        } 
      

  2.   

    最近我也遇到了,这个最好是检测一次你android手机的原生launcher 应用的包名,我采取的办法即循环遍历了已经安装的应用,而后找出你本机对应的launcher的包名,而后拼接那个Uri ,我测试是可以的
    不懂 q我:1162965454
      

  3.   

    like this:
    getAuthorityFromPermission(mContext, "com.android.launcher.permission.READ_SETTINGS")); public static String getAuthorityFromPermission(Context context, String permission)
    { if (permission == null) return null; List packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS); 
    if (packs != null) {
     for (PackageInfo pack : packs) { 
    ProviderInfo providers = pack.providers;
     if (providers != null) { for (ProviderInfo provider : providers) } 
    }
     } return null;
     }