diff --git a/F-Droid/res/layout-v11/app_permission_item.xml b/F-Droid/res/layout-v11/app_permission_item.xml new file mode 100644 index 000000000..b5aab370d --- /dev/null +++ b/F-Droid/res/layout-v11/app_permission_item.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- + Defines the layout of a single permission item. +--> + +<view class="org.fdroid.fdroid.installer.AppSecurityPermissions$PermissionItemView" + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:background="?android:attr/selectableItemBackground"> + + <ImageView + android:id="@+id/perm_icon" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="8dp" + android:scaleType="fitCenter" /> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:background="?android:attr/dividerVertical" /> + + <TextView + android:id="@+id/perm_name" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textSize="16sp" + android:layout_marginStart="8dp" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|left" /> + +</view> diff --git a/F-Droid/res/layout/app_permission_item.xml b/F-Droid/res/layout/app_permission_item.xml index b5aab370d..4d555c216 100644 --- a/F-Droid/res/layout/app_permission_item.xml +++ b/F-Droid/res/layout/app_permission_item.xml @@ -22,8 +22,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - android:background="?android:attr/selectableItemBackground"> + android:orientation="horizontal"> <ImageView android:id="@+id/perm_icon" @@ -35,8 +34,7 @@ <ImageView android:layout_width="wrap_content" - android:layout_height="match_parent" - android:background="?android:attr/dividerVertical" /> + android:layout_height="match_parent" /> <TextView android:id="@+id/perm_name" diff --git a/F-Droid/src/org/fdroid/fdroid/installer/AppSecurityPermissions.java b/F-Droid/src/org/fdroid/fdroid/installer/AppSecurityPermissions.java index f3c18ab5b..b22eced76 100644 --- a/F-Droid/src/org/fdroid/fdroid/installer/AppSecurityPermissions.java +++ b/F-Droid/src/org/fdroid/fdroid/installer/AppSecurityPermissions.java @@ -111,6 +111,16 @@ public class AppSecurityPermissions { } return null; } + + public int flags() { + if (Build.VERSION.SDK_INT < 17) return 0; + return flags; + } + + public int priority() { + if (Build.VERSION.SDK_INT < 17) return 0; + return priority; + } } private static class MyPermissionInfo extends PermissionInfo { @@ -411,6 +421,7 @@ public class AppSecurityPermissions { private PermissionItemView getPermissionItemView(MyPermissionGroupInfo grp, MyPermissionInfo perm, boolean first, CharSequence newPermPrefix) { PermissionItemView permView = (PermissionItemView) mInflater.inflate( + Build.VERSION.SDK_INT >= 17 && (perm.flags & PermissionInfo.FLAG_COSTS_MONEY) != 0 ? R.layout.app_permission_item_money : R.layout.app_permission_item, null); @@ -434,7 +445,8 @@ public class AppSecurityPermissions { // Dangerous and normal permissions are always shown to the user if the permission // is required, or it was previously granted - if ((isNormal || isDangerous) && (isRequired || wasGranted || isGranted)) { + if ((isNormal || isDangerous) && (isRequired || wasGranted || isGranted || + Build.VERSION.SDK_INT < 16)) { return true; } @@ -452,11 +464,11 @@ public class AppSecurityPermissions { PermissionGroupInfoComparator() { } public final int compare(MyPermissionGroupInfo a, MyPermissionGroupInfo b) { - if (((a.flags^b.flags)&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { - return ((a.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1; + if (((a.flags()^b.flags())&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { + return ((a.flags()&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1; } - if (a.priority != b.priority) { - return a.priority > b.priority ? -1 : 1; + if (a.priority() != b.priority()) { + return a.priority() > b.priority() ? -1 : 1; } return sCollator.compare(a.mLabel, b.mLabel); } @@ -497,7 +509,7 @@ public class AppSecurityPermissions { if (pInfo.mNew) { addPermToList(group.mNewPermissions, pInfo); } - if ((group.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { + if ((group.flags()&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { addPermToList(group.mPersonalPermissions, pInfo); } else { addPermToList(group.mDevicePermissions, pInfo);