Afficher la liste des permissions d'une application avec un listview(passage d'une activité à une autre)
Bonjour,
J'ai parcouru bon nombre de tutos et forum qui pourraient m'aider mais je stagne. J'ai deux activités, la première (qui fonctionne) affiche grâce à une ListView l'ensemble des applications téléchargées sur le téléphone. Je souhaiterais après que lorsque l'utilisateur clique sur une application, afficher la liste de toutes les permissions accordées à cette application. Je souhaite faire cette affichage dans une ListView parce que de chaque permission la finalité serait d'aboutir à une autre activité. (Jespère que je suis compréhensible).
Mon problème est que je n'arrive pas à avoir la ListView de permissions :/
I really need help! ca fait 4 jours que je suis dessus
Merci d'avance pour votre précieuse aide
Première activité
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| import android.app.Activity;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by awa.camara on 21/06/2016.
*/
public class ListApplicationsActivity extends Activity implements AdapterView.OnItemClickListener {
PackageManager packageManager;
ListView apkList;
private List<ApplicationInfo> applist = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.id_list_applications);
packageManager = getPackageManager();
List<PackageInfo> packageList = packageManager
.getInstalledPackages(PackageManager.GET_PERMISSIONS);
List<PackageInfo> packageList1 = new ArrayList<PackageInfo>();
/*To filter out System apps*/
for(PackageInfo pi : packageList) {
boolean b = isSystemPackage(pi);
if(!b) {
packageList1.add(pi);
}
}
apkList = (ListView) findViewById(R.id.applist);
apkList.setAdapter(new ApplicationsAdapter(this, packageList1, packageManager));
apkList.setOnItemClickListener(this);
}
private boolean isSystemPackage(PackageInfo pkgInfo) {
return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true
: false;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long row) {
PackageInfo packageInfo = (PackageInfo) parent
.getItemAtPosition(position);
AppData appData = (AppData) getApplicationContext();
appData.setPackageInfo(packageInfo);
//ApplicationInfo app = applist.get(position);
Intent appInfo = new Intent(getApplicationContext(), PermissionsActivity.class);
appInfo.putExtra("pos",position);
startActivity(appInfo);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
} |
Deuxième activité d'affichage des permissions
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class PermissionsActivity extends Activity{
PackageInfo packageInfo;
ListView permsList;
private List<ApplicationInfo> applist;
private PackageManager packageManager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int position = getIntent().getIntExtra("pos",0);
setContentView(R.layout.id_list_permissions);
applist = checkForLaunchIntent(applist);
ApplicationInfo app = applist.get(position);
packageManager = getPackageManager();
try {
PackageInfo packageInfo = packageManager.getPackageInfo(app.packageName, GET_PERMISSIONS);
String[] requestedPermissions = packageInfo.requestedPermissions;
for (int i =0; i < requestedPermissions.length; i++){
Log.d("permissionss",requestedPermissions[i]);
}
permsList = (ListView) findViewById(R.id.listPerm);
permsList.setAdapter(new PermissionAdapter_2(this, requestedPermissions));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
} |