Skip to content
This repository was archived by the owner on May 3, 2021. It is now read-only.

Commit 1d9434e

Browse files
committed
Activity permissions
1 parent 3201021 commit 1d9434e

File tree

4 files changed

+123
-42
lines changed

4 files changed

+123
-42
lines changed

applistmanagerlibrary/src/main/java/com/layoutxml/applistmanagerlibrary/AppList.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,13 @@ public static void getSomeApps(Context context, Integer applicationFlags, Boolea
9191

9292
public static void getAllActivities(Context context, Intent intent, Integer uniqueIdentifier){
9393
WeakReference<Context> context1 = new WeakReference<>(context);
94-
activityTask = new ActivityTask(context1, intent, 0, null, false, uniqueIdentifier, activitiesListener);
94+
activityTask = new ActivityTask(context1, intent, 0, null, false,null, uniqueIdentifier, activitiesListener);
9595
activityTask.execute();
9696
}
9797

98-
public static void getSomeActivities(Context context, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, Integer uniqueIdentifier){
98+
public static void getSomeActivities(Context context, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, String[] permissions, Integer uniqueIdentifier){
9999
WeakReference<Context> context1 = new WeakReference<>(context);
100-
activityTask = new ActivityTask(context1, intent, activityFlags, applicationFlags, applicationFlagsMatch, uniqueIdentifier, activitiesListener);
100+
activityTask = new ActivityTask(context1, intent, activityFlags, applicationFlags, applicationFlagsMatch,permissions, uniqueIdentifier, activitiesListener);
101101
activityTask.execute();
102102
}
103103

@@ -115,13 +115,13 @@ public static void getSomeNewApps(Context context, List<AppData> appDataList, In
115115

116116
public static void getAllNewActivities(Context context, List<AppData> appDataList, Intent intent, Integer uniqueIdentifier) {
117117
WeakReference<Context> context1 = new WeakReference<>(context);
118-
newActivityTask = new NewActivityTask(context1,appDataList,intent,0,null,false,uniqueIdentifier,newActivitiesListener);
118+
newActivityTask = new NewActivityTask(context1,appDataList,intent,0,null,false,null,uniqueIdentifier,newActivitiesListener);
119119
newActivityTask.execute();
120120
}
121121

122-
public static void getSomeNewActivities(Context context, List<AppData> appDataList, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, Integer uniqueIdentifier) {
122+
public static void getSomeNewActivities(Context context, List<AppData> appDataList, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, String[] permissions, Integer uniqueIdentifier) {
123123
WeakReference<Context> context1 = new WeakReference<>(context);
124-
newActivityTask = new NewActivityTask(context1,appDataList,intent,activityFlags,applicationFlags,applicationFlagsMatch,uniqueIdentifier,newActivitiesListener);
124+
newActivityTask = new NewActivityTask(context1,appDataList,intent,activityFlags,applicationFlags,applicationFlagsMatch,permissions,uniqueIdentifier,newActivitiesListener);
125125
newActivityTask.execute();
126126
}
127127

@@ -139,13 +139,13 @@ public static void getSomeUninstalledApps(Context context, List<AppData> appData
139139

140140
public static void getAllUninstalledActivities(Context context, List<AppData> appDataList, Intent intent, Integer uniqueIdentifier) {
141141
WeakReference<Context> context1 = new WeakReference<>(context);
142-
uninstalledActivityTask = new UninstalledActivityTask(context1, appDataList, intent, 0, null, false, uniqueIdentifier, uninstalledActivitiesListener);
142+
uninstalledActivityTask = new UninstalledActivityTask(context1, appDataList, intent, 0, null, false,null, uniqueIdentifier, uninstalledActivitiesListener);
143143
uninstalledActivityTask.execute();
144144
}
145145

146-
public static void getSomeUninstalledActivities(Context context, List<AppData> appDataList, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, Integer uniqueIdentifier) {
146+
public static void getSomeUninstalledActivities(Context context, List<AppData> appDataList, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, String[] permissions, Integer uniqueIdentifier) {
147147
WeakReference<Context> context1 = new WeakReference<>(context);
148-
uninstalledActivityTask = new UninstalledActivityTask(context1, appDataList, intent, activityFlags, applicationFlags, applicationFlagsMatch, uniqueIdentifier, uninstalledActivitiesListener);
148+
uninstalledActivityTask = new UninstalledActivityTask(context1, appDataList, intent, activityFlags, applicationFlags, applicationFlagsMatch,permissions, uniqueIdentifier, uninstalledActivitiesListener);
149149
uninstalledActivityTask.execute();
150150
}
151151

@@ -243,6 +243,8 @@ public void onReceive(Context context, Intent intent) {
243243
try {
244244
ApplicationInfo appInfo = packageManager.getApplicationInfo(app.getPackageName(),0);
245245
app.setFlags(appInfo.flags);
246+
PackageInfo packageInfo = packageManager.getPackageInfo(app.getPackageName(), PackageManager.GET_PERMISSIONS);
247+
app.setPermissions(packageInfo.requestedPermissions);
246248
} catch (PackageManager.NameNotFoundException e) {
247249
e.printStackTrace();
248250
}

applistmanagerlibrary/src/main/java/com/layoutxml/applistmanagerlibrary/tasks/ActivityTask.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.content.Intent;
55
import android.content.pm.ApplicationInfo;
6+
import android.content.pm.PackageInfo;
67
import android.content.pm.PackageManager;
78
import android.content.pm.ResolveInfo;
89
import android.os.AsyncTask;
@@ -23,15 +24,17 @@ public class ActivityTask extends AsyncTask<Void,Void,List<AppData>> {
2324
private final Integer flags;
2425
private final Integer activitiesFlags;
2526
private final Boolean match;
27+
private final String[] permissions;
2628

27-
public ActivityTask(WeakReference<Context> context, Intent intent, Integer activitiesFlags, Integer appFlags, Boolean appMatch, Integer uniqueIdentifier, WeakReference<ActivityListener> activitiesListenerWeakReference) {
29+
public ActivityTask(WeakReference<Context> context, Intent intent, Integer activitiesFlags, Integer appFlags, Boolean appMatch, String[] permissions, Integer uniqueIdentifier, WeakReference<ActivityListener> activitiesListenerWeakReference) {
2830
this.contextWeakReference = context;
2931
this.intent = intent;
3032
this.uniqueIdentifier = uniqueIdentifier;
3133
this.activitiesListenerWeakReference = activitiesListenerWeakReference;
3234
this.flags = appFlags;
3335
this.match = appMatch;
3436
this.activitiesFlags = activitiesFlags;
37+
this.permissions = permissions;
3538
}
3639

3740
@Override
@@ -47,18 +50,42 @@ protected List<AppData> doInBackground(Void... voids){
4750
app.setPackageName(resolveInfo.activityInfo.packageName);
4851
app.setIcon(resolveInfo.activityInfo.loadIcon(packageManager));
4952
app.setActivityName(resolveInfo.activityInfo.name);
53+
Boolean containsPermission = false;
5054
try {
5155
ApplicationInfo appInfo = packageManager.getApplicationInfo(app.getPackageName(),0);
5256
app.setFlags(appInfo.flags);
57+
PackageInfo packageInfo = packageManager.getPackageInfo(app.getPackageName(), PackageManager.GET_PERMISSIONS);
58+
String[] requestedPermissions = packageInfo.requestedPermissions;
59+
if (permissions!=null) {
60+
if (requestedPermissions != null) {
61+
for (String requestedPermission : requestedPermissions) {
62+
for (String permission : permissions) {
63+
if (requestedPermission.equals(permission)) {
64+
containsPermission = true;
65+
break;
66+
}
67+
}
68+
if (containsPermission)
69+
break;
70+
}
71+
}
72+
} else {
73+
containsPermission = true;
74+
}
75+
app.setPermissions(requestedPermissions);
5376
} catch (PackageManager.NameNotFoundException e) {
5477
e.printStackTrace();
78+
if (permissions==null)
79+
containsPermission=true;
5580
}
56-
if (match) {
57-
if ((flags == null) || ((app.getFlags() & flags) != 0))
58-
appDataList.add(app);
59-
} else {
60-
if ((flags == null) || ((app.getFlags() & flags) == 0))
61-
appDataList.add(app);
81+
if (containsPermission) {
82+
if (match) {
83+
if ((flags == null) || ((app.getFlags() & flags) != 0))
84+
appDataList.add(app);
85+
} else {
86+
if ((flags == null) || ((app.getFlags() & flags) == 0))
87+
appDataList.add(app);
88+
}
6289
}
6390
if (isCancelled())
6491
break;

applistmanagerlibrary/src/main/java/com/layoutxml/applistmanagerlibrary/tasks/NewActivityTask.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.content.Intent;
55
import android.content.pm.ApplicationInfo;
6+
import android.content.pm.PackageInfo;
67
import android.content.pm.PackageManager;
78
import android.content.pm.ResolveInfo;
89
import android.os.AsyncTask;
@@ -24,9 +25,10 @@ public class NewActivityTask extends AsyncTask<Void,Void,List<AppData>> {
2425
private final Integer uniqueIdentifier;
2526
private final Intent intent;
2627
private final Integer activitiesFlags;
28+
private final String[] permissions;
2729

2830

29-
public NewActivityTask(WeakReference<Context> context, List<AppData> receivedAppList, Intent intent, Integer activitiesFlags, Integer flags, Boolean match, Integer uniqueIdentifier, WeakReference<NewActivityListener> newActivitiesListener) {
31+
public NewActivityTask(WeakReference<Context> context, List<AppData> receivedAppList, Intent intent, Integer activitiesFlags, Integer flags, Boolean match, String[] permissions, Integer uniqueIdentifier, WeakReference<NewActivityListener> newActivitiesListener) {
3032
contextWeakReference = context;
3133
this.newActivitiesListener = newActivitiesListener;
3234
this.receivedAppList = receivedAppList;
@@ -35,6 +37,7 @@ public NewActivityTask(WeakReference<Context> context, List<AppData> receivedApp
3537
this.uniqueIdentifier = uniqueIdentifier;
3638
this.intent = intent;
3739
this.activitiesFlags = activitiesFlags;
40+
this.permissions = permissions;
3841
}
3942

4043
@Override
@@ -50,30 +53,53 @@ protected final List<AppData> doInBackground(Void... voids){
5053
app.setPackageName(resolveInfo.activityInfo.packageName);
5154
app.setIcon(resolveInfo.activityInfo.loadIcon(packageManager));
5255
app.setActivityName(resolveInfo.activityInfo.name);
56+
Boolean containsPermission = false;
5357
try {
5458
ApplicationInfo appInfo = packageManager.getApplicationInfo(app.getPackageName(),0);
5559
app.setFlags(appInfo.flags);
60+
PackageInfo packageInfo = packageManager.getPackageInfo(app.getPackageName(), PackageManager.GET_PERMISSIONS);
61+
String[] requestedPermissions = packageInfo.requestedPermissions;
62+
if (permissions!=null) {
63+
if (requestedPermissions != null) {
64+
for (String requestedPermission : requestedPermissions) {
65+
for (String permission : permissions) {
66+
if (requestedPermission.equals(permission)) {
67+
containsPermission = true;
68+
break;
69+
}
70+
}
71+
if (containsPermission)
72+
break;
73+
}
74+
}
75+
} else {
76+
containsPermission = true;
77+
}
78+
app.setPermissions(requestedPermissions);
5679
} catch (PackageManager.NameNotFoundException e) {
5780
e.printStackTrace();
81+
if (permissions==null)
82+
containsPermission=true;
5883
}
59-
if (receivedAppList!=null) {
60-
if (match) {
61-
if ((flags == null) || ((app.getFlags() & flags) != 0))
62-
if (!receivedAppList.contains(app))
63-
appDataList.add(app);
84+
if (containsPermission) {
85+
if (receivedAppList != null) {
86+
if (match) {
87+
if ((flags == null) || ((app.getFlags() & flags) != 0))
88+
if (!receivedAppList.contains(app))
89+
appDataList.add(app);
90+
} else {
91+
if ((flags == null) || ((app.getFlags() & flags) == 0))
92+
if (!receivedAppList.contains(app))
93+
appDataList.add(app);
94+
}
6495
} else {
65-
if ((flags == null) || ((app.getFlags() & flags) == 0))
66-
if (!receivedAppList.contains(app))
96+
if (match) {
97+
if ((flags == null) || ((app.getFlags() & flags) != 0))
6798
appDataList.add(app);
68-
}
69-
} else
70-
{
71-
if (match) {
72-
if ((flags == null) || ((app.getFlags() & flags) != 0))
73-
appDataList.add(app);
74-
} else {
75-
if ((flags == null) || ((app.getFlags() & flags) == 0))
76-
appDataList.add(app);
99+
} else {
100+
if ((flags == null) || ((app.getFlags() & flags) == 0))
101+
appDataList.add(app);
102+
}
77103
}
78104
}
79105
if (isCancelled())

applistmanagerlibrary/src/main/java/com/layoutxml/applistmanagerlibrary/tasks/UninstalledActivityTask.java

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.content.Intent;
55
import android.content.pm.ApplicationInfo;
6+
import android.content.pm.PackageInfo;
67
import android.content.pm.PackageManager;
78
import android.content.pm.ResolveInfo;
89
import android.os.AsyncTask;
@@ -24,9 +25,9 @@ public class UninstalledActivityTask extends AsyncTask<Void,Void,List<AppData>>
2425
private final Integer activityFlags;
2526
private final Integer applicationFlags;
2627
private final Boolean applicationFlagsMatch;
28+
private final String[] permissions;
2729

28-
29-
public UninstalledActivityTask(WeakReference<Context> context, List<AppData> receivedAppList, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, Integer uniqueIdentifier, WeakReference<UninstalledActivityListener> uninstalledListener) {
30+
public UninstalledActivityTask(WeakReference<Context> context, List<AppData> receivedAppList, Intent intent, Integer activityFlags, Integer applicationFlags, Boolean applicationFlagsMatch, String[] permissions, Integer uniqueIdentifier, WeakReference<UninstalledActivityListener> uninstalledListener) {
3031
contextWeakReference = context;
3132
this.uninstalledActivitiesTaskWeakReference = uninstalledListener;
3233
this.receivedAppList = receivedAppList;
@@ -35,6 +36,7 @@ public UninstalledActivityTask(WeakReference<Context> context, List<AppData> rec
3536
this.activityFlags = activityFlags;
3637
this.applicationFlags = applicationFlags;
3738
this.applicationFlagsMatch = applicationFlagsMatch;
39+
this.permissions = permissions;
3840
}
3941

4042
@Override
@@ -51,19 +53,43 @@ protected final List<AppData> doInBackground(Void... voids){
5153
app.setPackageName(resolveInfo.activityInfo.packageName);
5254
app.setIcon(resolveInfo.activityInfo.loadIcon(packageManager));
5355
app.setActivityName(resolveInfo.activityInfo.name);
56+
Boolean containsPermission = false;
5457
try {
5558
ApplicationInfo appInfo = packageManager.getApplicationInfo(app.getPackageName(),0);
5659
app.setFlags(appInfo.flags);
60+
PackageInfo packageInfo = packageManager.getPackageInfo(app.getPackageName(), PackageManager.GET_PERMISSIONS);
61+
String[] requestedPermissions = packageInfo.requestedPermissions;
62+
if (permissions!=null) {
63+
if (requestedPermissions != null) {
64+
for (String requestedPermission : requestedPermissions) {
65+
for (String permission : permissions) {
66+
if (requestedPermission.equals(permission)) {
67+
containsPermission = true;
68+
break;
69+
}
70+
}
71+
if (containsPermission)
72+
break;
73+
}
74+
}
75+
} else {
76+
containsPermission = true;
77+
}
78+
app.setPermissions(requestedPermissions);
5779
} catch (PackageManager.NameNotFoundException e) {
5880
e.printStackTrace();
81+
if (permissions==null)
82+
containsPermission=true;
5983
}
60-
if (applicationFlagsMatch) {
61-
if ((applicationFlags == null) || ((app.getFlags() & applicationFlags) != 0)) {
62-
installedAppList.add(app);
63-
}
64-
} else {
65-
if ((applicationFlags == null) || ((app.getFlags() & applicationFlags) == 0)) {
66-
installedAppList.add(app);
84+
if (containsPermission) {
85+
if (applicationFlagsMatch) {
86+
if ((applicationFlags == null) || ((app.getFlags() & applicationFlags) != 0)) {
87+
installedAppList.add(app);
88+
}
89+
} else {
90+
if ((applicationFlags == null) || ((app.getFlags() & applicationFlags) == 0)) {
91+
installedAppList.add(app);
92+
}
6793
}
6894
}
6995
if (isCancelled())

0 commit comments

Comments
 (0)