2016-03-28 21 views
0

こんにちは、私はJavaとAndroidの新しい世界ではかなり基本的な新機能です。自分自身のプロジェクトに取り組んでいる時代。基本的には、ListViewに特定のアプリケーションのアクセス許可名を表示する必要があります。アンドロイド上の特定のアプリケーションの権限名を表示ListView

私はすでに実装していますが、うまく機能します。しかし、私のリストビューに、私は「android.permission.MANAGE_ACCOUNTS」

のようなものとして許可名を取得しています。しかし、私はここで

を「アカウントの管理」として、その文字列を表示したい、私が書いたコードブロックです。

final PackageManager pm = getPackageManager(); 

List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 

    try { 
     PackageInfo packageInfo = pm.getPackageInfo(appPackageName, PackageManager.GET_PERMISSIONS); 

     //Get Permissions 
     String[] requestedPermissions = packageInfo.requestedPermissions; 

     if(requestedPermissions != null) { 
      for (int i = 0; i < requestedPermissions.length; i++) { 

       Log.d("test", requestedPermissions[i]); 

       itemname.add(requestedPermissions[i]); 

      } 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
} 

許可名は、「android.permission.PERMISSION_NAME」などのように表示されます。しかし、私はそれらを人間が読めるようなビットとして示したいと思います。たとえば、 "android.permission.PERMISSION_NAME"を "Permission Name"として表示します。

答えて

0

最終PackageManager pm = getPackageManager();

List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 

    try { 
     PackageInfo packageInfo = pm.getPackageInfo("ashish.app.com.getpremissions", PackageManager.GET_PERMISSIONS); 

     //Get Permissions 
     String[] requestedPermissions = packageInfo.requestedPermissions; 

     if (requestedPermissions != null) { 
      for (int i = 0; i < requestedPermissions.length; i++) { 

       Log.d("test", requestedPermissions[i]); 

       String[] last = requestedPermissions[i].toString().split("\\."); 

       String lastOne = last[last.length - 1]; 

       if (!lastOne.contains("_")) { 
        Log.e("app", "permissions is----" + lastOne.toLowerCase()); 
       } else { 
        String[] permissions = lastOne.split("_"); 
        StringBuffer sb = new StringBuffer(); 
        for (int index = 0; index < permissions.length; index++) { 
         sb.append(permissions[index].toLowerCase()); 
         sb.append(" "); 
        } 
        Log.e("app", "permissions is----" + sb.toString()); 
       } 

       // itemname.add(); 

      } 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
    } 
+0

ありがとう、それは働いた –

1

"android.permission.MANAGE_ACCOUNTS"から"Manage Accounts"のような文字列を変換することは可能です。しかし、同じアルゴリズムを適用することは安全です(android.permission.を削除してから、_ウィットスペースと変換文字列をすべて小文字に置き換えてください)。

あなたはすべての許可名が同じルールに従ってくださいあなたはこのような何かができることを確信している場合:

String permissionName = "android.permission.PERMISSION_NAME"; 
     permissionName = permissionName.replace("android.permission.", ""); 
     String[] words = permissionName.split("_"); 
     String newPermissionName = ""; 
     for(String word: words){ 
      newPermissionName+= word.substring(0,1) + word.substring(1).toLowerCase() + " "; 
     } 

を(多分それが最善の方法ではありませんが、それは動作します)

また、権限理由あなたは別の許可STYLを心配されていないこのところで

map.put("android.permission.MANAGE_ACCOUNTS", "Manage Accounts"); 

:静的で、あなたはそれぞれの権限の名前を格納するのにHashMapを使用することができます必要な権限名を使用することもできます。

+0

私は同じように考えました。他のいくつかの名前は異なる形式です。だからそれを使わなかった。上記の解決策が働いた。 –

関連する問題