summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2015-03-26 14:43:41 -0400
committerJason Monk <jmonk@google.com>2015-03-27 10:43:11 -0400
commitdbc3e510110d707aeb9ea9dbf350e69b4d79ad79 (patch)
tree0cd25e8c129eaba4d51b9ccb3c7dd184abc7a49f /src
parent46c55104384a9138d51c18c24114885af842afde (diff)
downloadandroid_packages_apps_PackageInstaller-dbc3e510110d707aeb9ea9dbf350e69b4d79ad79.tar.gz
android_packages_apps_PackageInstaller-dbc3e510110d707aeb9ea9dbf350e69b4d79ad79.tar.bz2
android_packages_apps_PackageInstaller-dbc3e510110d707aeb9ea9dbf350e69b4d79ad79.zip
Minor updates to permission request dialog
- Show correct icon and tinting for it - Bold/color the app name - Update the string, location and themeing of the checkbox, although its not actually hooked up yet. Change-Id: Ia7da81abb3d427f6d37ea29e8a38531cb743e878
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/AppPermissions.java25
-rw-r--r--src/com/android/packageinstaller/permission/GrantPermissionFragment.java31
-rw-r--r--src/com/android/packageinstaller/permission/GrantPermissionsActivity.java23
-rw-r--r--src/com/android/packageinstaller/permission/ManagePermissionsFragment.java3
4 files changed, 67 insertions, 15 deletions
diff --git a/src/com/android/packageinstaller/permission/AppPermissions.java b/src/com/android/packageinstaller/permission/AppPermissions.java
index 899c888d..8d81d682 100644
--- a/src/com/android/packageinstaller/permission/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/AppPermissions.java
@@ -18,13 +18,17 @@ package com.android.packageinstaller.permission;
import android.content.Context;
import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
+import android.content.res.Resources.NotFoundException;
+import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.Log;
+
import com.android.internal.util.ArrayUtils;
import java.util.ArrayList;
@@ -109,10 +113,12 @@ public final class AppPermissions {
continue;
}
+ final String iconPkg = (groupInfo != null)
+ ? groupInfo.packageName : permInfo.packageName;
final int iconResId = (groupInfo != null) ? groupInfo.icon : permInfo.icon;
group = new PermissionGroup(mContext, mPackageInfo.packageName,
- groupName, groupLabel, iconResId);
+ groupName, groupLabel, iconPkg, iconResId);
mGroups.put(groupName, group);
}
@@ -152,6 +158,7 @@ public final class AppPermissions {
private final String mName;
private final CharSequence mLabel;
private final ArrayMap<String, Permission> mPermissions = new ArrayMap<>();
+ private final String mIconPkg;
private final int mIconResId;
private boolean mHasRuntimePermissions;
@@ -160,6 +167,10 @@ public final class AppPermissions {
return mName;
}
+ public String getIconPkg() {
+ return mIconPkg;
+ }
+
public int getIconResId() {
return mIconResId;
}
@@ -169,11 +180,12 @@ public final class AppPermissions {
}
public PermissionGroup(Context context, String packageName,
- String name, CharSequence label, int iconResId) {
+ String name, CharSequence label, String iconPkg, int iconResId) {
mPackageName = packageName;
mContext = context;
mName = name;
mLabel = label;
+ mIconPkg = iconPkg;
mIconResId = iconResId;
}
@@ -294,4 +306,13 @@ public final class AppPermissions {
mGranted = granted;
}
}
+
+ public static Drawable loadDrawable(PackageManager pm, String pkg, int resId) {
+ try {
+ return pm.getResourcesForApplication(pkg).getDrawable(resId, null);
+ } catch (NotFoundException | NameNotFoundException e) {
+ Log.d(LOG_TAG, "Couldn't get resource", e);
+ return null;
+ }
+ }
}
diff --git a/src/com/android/packageinstaller/permission/GrantPermissionFragment.java b/src/com/android/packageinstaller/permission/GrantPermissionFragment.java
index 65b60687..3fe37114 100644
--- a/src/com/android/packageinstaller/permission/GrantPermissionFragment.java
+++ b/src/com/android/packageinstaller/permission/GrantPermissionFragment.java
@@ -17,14 +17,16 @@
package com.android.packageinstaller.permission;
import android.app.DialogFragment;
+import android.content.DialogInterface;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
-
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+
import com.android.packageinstaller.R;
public final class GrantPermissionFragment extends DialogFragment {
@@ -32,14 +34,15 @@ public final class GrantPermissionFragment extends DialogFragment {
public static final String ARG_GROUP_COUNT = "ARG_GROUP_COUNT";
public static final String ARG_GROUP_INDEX = "ARG_GROUP_INDEX";
public static final String ARG_GROUP_ICON_RES_ID = "ARG_GROUP_ICON";
+ public static final String ARG_GROUP_ICON_PKG = "ARG_GROUP_ICON_PKG";
public static final String ARG_GROUP_MESSAGE = "ARG_GROUP_MESSAGE";
public interface OnRequestGrantPermissionGroupResult {
public void onRequestGrantPermissionGroupResult(String name, boolean granted);
}
- public static GrantPermissionFragment newInstance(String groupName,
- int groupCount, int groupIndex, int iconResId, CharSequence message) {
+ public static GrantPermissionFragment newInstance(String groupName, int groupCount,
+ int groupIndex, String iconPkg, int iconResId, CharSequence message) {
GrantPermissionFragment instance = new GrantPermissionFragment();
instance.setStyle(STYLE_NORMAL,
android.R.style.Theme_DeviceDefault_Light_Dialog_NoActionBar);
@@ -49,19 +52,23 @@ public final class GrantPermissionFragment extends DialogFragment {
arguments.putInt(ARG_GROUP_COUNT, groupCount);
arguments.putInt(ARG_GROUP_INDEX, groupIndex);
arguments.putInt(ARG_GROUP_ICON_RES_ID, iconResId);
+ arguments.putString(ARG_GROUP_ICON_PKG, iconPkg);
arguments.putCharSequence(ARG_GROUP_MESSAGE, message);
instance.setArguments(arguments);
return instance;
}
+ private String mGroupName;
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View content = inflater.inflate(R.layout.grant_permissions, container, false);
- final String groupName = getArguments().getString(ARG_GROUP_NAME);
- final String message = getArguments().getString(ARG_GROUP_MESSAGE);
+ mGroupName = getArguments().getString(ARG_GROUP_NAME);
+ final CharSequence message = getArguments().getCharSequence(ARG_GROUP_MESSAGE);
+ final String iconPkg = getArguments().getString(ARG_GROUP_ICON_PKG);
final int iconResId = getArguments().getInt(ARG_GROUP_ICON_RES_ID);
final int groupCount = getArguments().getInt(ARG_GROUP_COUNT);
final int groupIndex = getArguments().getInt(ARG_GROUP_INDEX);
@@ -78,17 +85,19 @@ public final class GrantPermissionFragment extends DialogFragment {
public void onClick(View view) {
if (view == allowButton) {
((OnRequestGrantPermissionGroupResult) getActivity())
- .onRequestGrantPermissionGroupResult(groupName, true);
+ .onRequestGrantPermissionGroupResult(mGroupName, true);
} else if (view == denyButton) {
((OnRequestGrantPermissionGroupResult) getActivity())
- .onRequestGrantPermissionGroupResult(groupName, false);
+ .onRequestGrantPermissionGroupResult(mGroupName, false);
} else if (view == doNotAskCheckbox) {
//TODO: Implement me.
}
}
};
- iconView.setImageResource(iconResId);
+ Drawable icon = AppPermissions.loadDrawable(getActivity().getPackageManager(), iconPkg,
+ iconResId);
+ iconView.setImageDrawable(icon);
messageView.setText(message);
@@ -106,4 +115,10 @@ public final class GrantPermissionFragment extends DialogFragment {
return content;
}
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ ((OnRequestGrantPermissionGroupResult) getActivity())
+ .onRequestGrantPermissionGroupResult(mGroupName, false);
+ }
}
diff --git a/src/com/android/packageinstaller/permission/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/GrantPermissionsActivity.java
index 4c3eb247..4f6486cb 100644
--- a/src/com/android/packageinstaller/permission/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/GrantPermissionsActivity.java
@@ -25,8 +25,12 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PermissionInfo;
+import android.graphics.Color;
import android.hardware.camera2.utils.ArrayUtils;
import android.os.Bundle;
+import android.text.SpannableString;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.StyleSpan;
import android.util.ArrayMap;
import android.util.Log;
import android.util.SparseArray;
@@ -114,14 +118,25 @@ public class GrantPermissionsActivity extends Activity implements
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.commit();
- CharSequence message = getString(R.string.permission_warning_template,
- mAppPermissions.getAppLabel(), groupState.mGroup.getLabel());
+ CharSequence appLabel = mAppPermissions.getAppLabel();
+ SpannableString message = new SpannableString(getString(
+ R.string.permission_warning_template, appLabel,
+ groupState.mGroup.getLabel()));
+ // Bold/color the app name.
+ int appLabelStart = message.toString().indexOf(appLabel.toString(), 0);
+ int appLabelLength = appLabel.length();
+ message.setSpan(new ForegroundColorSpan(Color.BLACK), appLabelStart,
+ appLabelStart + appLabelLength, 0);
+ message.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), appLabelStart,
+ appLabelStart + appLabelLength, 0);
// Add the new grant fragment.
- // TODO: Use a real message for the action and a real icon. We need group action APIs
+ // TODO: Use a real message for the action. We need group action APIs
+ String pkg = groupState.mGroup.getIconPkg();
+ int icon = groupState.mGroup.getIconResId();
DialogFragment newFragment = GrantPermissionFragment
.newInstance(groupState.mGroup.getName(), groupCount, i,
- android.R.drawable.ic_dialog_info, message);
+ pkg, icon, message);
newFragment.show(getFragmentManager(), TAG_GRANT_PERMISSION_GROUP_FRAGMENT);
return true;
diff --git a/src/com/android/packageinstaller/permission/ManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ManagePermissionsFragment.java
index a9cef839..4382f551 100644
--- a/src/com/android/packageinstaller/permission/ManagePermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ManagePermissionsFragment.java
@@ -93,7 +93,8 @@ public final class ManagePermissionsFragment extends SettingsWithHeader
SwitchPreference preference = new SwitchPreference(activity);
preference.setOnPreferenceChangeListener(this);
preference.setKey(group.getName());
- preference.setIcon(group.getIconResId());
+ preference.setIcon(AppPermissions.loadDrawable(pm, group.getIconPkg(),
+ group.getIconResId()));
preference.setTitle(group.getLabel());
preference.setPersistent(false);
screen.addPreference(preference);