summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissionGroup.java13
-rw-r--r--src/com/android/packageinstaller/permission/model/Permission.java8
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java27
-rw-r--r--src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java2
-rw-r--r--src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java49
-rw-r--r--src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java4
-rw-r--r--src/com/android/packageinstaller/permission/ui/SettingsWithHeader.java10
7 files changed, 100 insertions, 13 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
index 7b2de19a..6bd15aff 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
@@ -459,6 +459,19 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
return true;
}
+ public void setPolicyFixed() {
+ final int permissionCount = mPermissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = mPermissions.valueAt(i);
+ permission.setPolicyFixed(true);
+ mPackageManager.updatePermissionFlags(permission.getName(),
+ mPackageInfo.packageName,
+ PackageManager.FLAG_PERMISSION_POLICY_FIXED,
+ PackageManager.FLAG_PERMISSION_POLICY_FIXED,
+ mUserHandle);
+ }
+ }
+
public List<Permission> getPermissions() {
return new ArrayList<>(mPermissions.values());
}
diff --git a/src/com/android/packageinstaller/permission/model/Permission.java b/src/com/android/packageinstaller/permission/model/Permission.java
index 09c927be..da234bdb 100644
--- a/src/com/android/packageinstaller/permission/model/Permission.java
+++ b/src/com/android/packageinstaller/permission/model/Permission.java
@@ -96,6 +96,14 @@ public final class Permission {
}
}
+ public void setPolicyFixed(boolean policyFixed) {
+ if (policyFixed) {
+ mFlags |= PackageManager.FLAG_PERMISSION_POLICY_FIXED;
+ } else {
+ mFlags &= ~PackageManager.FLAG_PERMISSION_POLICY_FIXED;
+ }
+ }
+
public boolean shouldRevokeOnUpgrade() {
return (mFlags & PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE) != 0;
}
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index 98773f54..aa91b488 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -64,6 +64,8 @@ public class GrantPermissionsActivity extends Activity
private GrantPermissionsViewHandler mViewHandler;
private AppPermissions mAppPermissions;
+ boolean mResultSet;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -119,12 +121,14 @@ public class GrantPermissionsActivity extends Activity
case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
if (!group.areRuntimePermissionsGranted()) {
group.grantRuntimePermissions(false);
+ group.setPolicyFixed();
}
} break;
case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: {
if (!group.areRuntimePermissionsGranted()) {
group.revokeRuntimePermissions(false);
+ group.setPolicyFixed();
}
} break;
@@ -240,9 +244,9 @@ public class GrantPermissionsActivity extends Activity
}
@Override
- public void onBackPressed() {
- setResultAndFinish();
- super.onBackPressed();
+ public void finish() {
+ setResultIfNeeded(RESULT_CANCELED);
+ super.finish();
}
private int computePermissionGrantState(PackageInfo callingPackageInfo,
@@ -304,12 +308,19 @@ public class GrantPermissionsActivity extends Activity
}
}
+ private void setResultIfNeeded(int resultCode) {
+ if (!mResultSet) {
+ mResultSet = true;
+ logRequestedPermissionGroups();
+ Intent result = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS);
+ result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, mRequestedPermissions);
+ result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS, mGrantResults);
+ setResult(resultCode, result);
+ }
+ }
+
private void setResultAndFinish() {
- logRequestedPermissionGroups();
- Intent result = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS);
- result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, mRequestedPermissions);
- result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS, mGrantResults);
- setResult(RESULT_OK, result);
+ setResultIfNeeded(RESULT_OK);
finish();
}
diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
index 2fc1a02b..934ed369 100644
--- a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
@@ -29,7 +29,7 @@ public final class ManagePermissionsActivity extends Activity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- Fragment fragment = null;
+ Fragment fragment;
String action = getIntent().getAction();
switch (action) {
diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
index 6dc5cda4..00d30d19 100644
--- a/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
@@ -15,11 +15,13 @@
*/
package com.android.packageinstaller.permission.ui;
+import android.annotation.Nullable;
import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
import android.content.Intent;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
@@ -27,9 +29,15 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.util.ArraySet;
import android.util.Log;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.PermissionApps;
@@ -137,6 +145,27 @@ public final class ManagePermissionsFragment extends PreferenceFragment
updatePermissionsUi();
}
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.permissions_frame, container,
+ false);
+ ViewGroup prefsContainer = (ViewGroup) rootView.findViewById(R.id.prefs_container);
+ if (prefsContainer == null) {
+ prefsContainer = rootView;
+ }
+ prefsContainer.addView(super.onCreateView(inflater, prefsContainer, savedInstanceState));
+ View emptyView = rootView.findViewById(R.id.no_permissions);
+ ((ListView) rootView.findViewById(android.R.id.list)).setEmptyView(emptyView);
+ return rootView;
+ }
+
+ @Override
+ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ updatePermissionsUi();
+ }
+
private void updatePermissionsUi() {
Activity activity = getActivity();
@@ -144,6 +173,26 @@ public final class ManagePermissionsFragment extends PreferenceFragment
return;
}
+ final ViewGroup rootView = (ViewGroup) getView();
+ if (rootView != null) {
+ final ImageView iconView = (ImageView) rootView.findViewById(R.id.lb_icon);
+ if (iconView != null) {
+ // Set the icon as the background instead of the image because ImageView
+ // doesn't properly scale vector drawables beyond their intrinsic size
+ Drawable icon = activity.getDrawable(R.drawable.ic_lock);
+ icon.setTint(activity.getColor(R.color.off_white));
+ iconView.setBackground(icon);
+ }
+ final TextView titleView = (TextView) rootView.findViewById(R.id.lb_title);
+ if (titleView != null) {
+ titleView.setText(R.string.app_permissions);
+ }
+ final TextView breadcrumbView = (TextView) rootView.findViewById(R.id.lb_breadcrumb);
+ if (breadcrumbView != null) {
+ breadcrumbView.setText(R.string.app_permissions_breadcrumb);
+ }
+ }
+
List<PermissionGroup> groups = mPermissions.getGroups();
PreferenceScreen screen = getPreferenceScreen();
diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java
index 82494ec4..ae7560e8 100644
--- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java
@@ -161,7 +161,9 @@ public final class PermissionAppsFragment extends PreferenceFragment implements
final ViewGroup rootView = (ViewGroup) getView();
final ImageView iconView = (ImageView) rootView.findViewById(R.id.lb_icon);
if (iconView != null) {
- iconView.setImageDrawable(icon);
+ // Set the icon as the background instead of the image because ImageView
+ // doesn't properly scale vector drawables beyond their intrinsic size
+ iconView.setBackground(icon);
}
final TextView titleView = (TextView) rootView.findViewById(R.id.lb_title);
if (titleView != null) {
diff --git a/src/com/android/packageinstaller/permission/ui/SettingsWithHeader.java b/src/com/android/packageinstaller/permission/ui/SettingsWithHeader.java
index d9def799..74146fe6 100644
--- a/src/com/android/packageinstaller/permission/ui/SettingsWithHeader.java
+++ b/src/com/android/packageinstaller/permission/ui/SettingsWithHeader.java
@@ -17,6 +17,7 @@
package com.android.packageinstaller.permission.ui;
import android.content.Intent;
+import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceFragment;
@@ -42,9 +43,12 @@ public abstract class SettingsWithHeader extends PreferenceFragment implements O
Bundle savedInstanceState) {
LinearLayout contentParent =
(LinearLayout) super.onCreateView(inflater, container, savedInstanceState);
- mHeader = inflater.inflate(R.layout.header, contentParent, false);
- contentParent.addView(mHeader, 0);
- updateHeader();
+ int uiMode = getResources().getConfiguration().uiMode;
+ if ((uiMode & Configuration.UI_MODE_TYPE_MASK) != Configuration.UI_MODE_TYPE_TELEVISION) {
+ mHeader = inflater.inflate(R.layout.header, contentParent, false);
+ contentParent.addView(mHeader, 0);
+ updateHeader();
+ }
return contentParent;
}