I'm creating a function which retrieves the installed apps of the device, the package of the app and the permissions each app has. The problem is that I want to put all of this into a JSON file and I do not know how to do it, here it is what I programmed, but it doesn't work, please, if someone know something, help, it is very important for me! Thanks in advance.
public static void installedApps(Context context) throws IOException{
PackageManager pm = context.getPackageManager();
List<ApplicationInfo> packagelist = pm.getInstalledApplications(PackageManager.GET_META_DATA);
CharSequence app;
String pckge;
String[] permissions;
for (ApplicationInfo applicationInfo : packagelist){
app = applicationInfo.loadLabel(context.getPackageManager());
pckge = applicationInfo.packageName;
JSONObject json = new JSONObject();
Log.d("test", "App: "+ applicationInfo.loadLabel(context.getPackageManager()) +", Package: " + applicationInfo.packageName);
try{
PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, 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]);
permissions = requestedPermissions;
JSONArray jsonArray = new JSONArray();
try{
json.put("app", app);
json.put("package", pckge);
jsonArray.put(Integer.parseInt("permission"), permissions);
}catch (JSONException e) {
e.printStackTrace();
}
}
}
//primero cargar en un array todos los datos, y pasarlos a un json llamandolos
}catch (PackageManager.NameNotFoundException e){
e.printStackTrace();
}
}
}