Reuse AppSecurityPermissions in AppDetails

This commit is contained in:
Dominik Schürmann 2016-06-09 23:42:14 +02:00
parent f5db19eba8
commit c88afd0995
3 changed files with 13 additions and 65 deletions

View File

@ -90,8 +90,9 @@ import org.fdroid.fdroid.installer.InstallerFactory;
import org.fdroid.fdroid.installer.InstallerService;
import org.fdroid.fdroid.net.Downloader;
import org.fdroid.fdroid.net.DownloaderService;
import org.fdroid.fdroid.privileged.views.AppDiff;
import org.fdroid.fdroid.privileged.views.AppSecurityPermissions;
import java.util.ArrayList;
import java.util.List;
public class AppDetails extends AppCompatActivity {
@ -1062,7 +1063,7 @@ public class AppDetails extends AppCompatActivity {
private final View.OnClickListener expanderPermissions = new View.OnClickListener() {
@Override
public void onClick(View v) {
final TextView permissionListView = (TextView) llViewMorePermissions.findViewById(R.id.permissions_list);
final View permissionListView = llViewMorePermissions.findViewById(R.id.permission_list);
final TextView permissionHeader = (TextView) llViewMorePermissions.findViewById(R.id.permissions);
if (permissionListView.getVisibility() == View.GONE) {
@ -1372,29 +1373,11 @@ public class AppDetails extends AppCompatActivity {
}
private void buildPermissionInfo() {
final TextView permissionListView = (TextView) llViewMorePermissions.findViewById(R.id.permissions_list);
AppDiff appDiff = new AppDiff(appDetails.getPackageManager(), appDetails.getApks().getItem(0));
AppSecurityPermissions perms = new AppSecurityPermissions(appDetails, appDiff.pkgInfo);
ArrayList<String> permsList = appDetails.getApks().getItem(0).getFullPermissionList();
if (permsList == null) {
permissionListView.setText(R.string.no_permissions);
} else {
StringBuilder sb = new StringBuilder();
for (String permissionName : permsList) {
try {
final Permission permission = new Permission(getActivity(), permissionName);
// TODO: Make this list RTL friendly
sb.append("\t• ").append(permission.getName()).append('\n');
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Permission not yet available: " + permissionName);
}
}
if (sb.length() > 0) {
sb.setLength(sb.length() - 1);
permissionListView.setText(sb.toString());
} else {
permissionListView.setText(R.string.no_permissions);
}
}
final ViewGroup permList = (ViewGroup) llViewMorePermissions.findViewById(R.id.permission_list);
permList.addView(perms.getPermissionsView(AppSecurityPermissions.WHICH_ALL));
}
private String descAntiFeature(String af) {

View File

@ -1,24 +0,0 @@
package org.fdroid.fdroid;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
public class Permission {
private final PackageManager packageManager;
private final PermissionInfo permissionInfo;
Permission(Context context, String permission)
throws PackageManager.NameNotFoundException {
this.packageManager = context.getPackageManager();
this.permissionInfo = this.packageManager.getPermissionInfo(
permission, PackageManager.GET_META_DATA);
}
public CharSequence getName() {
String label = this.permissionInfo.loadLabel(this.packageManager).toString();
return Character.toUpperCase(label.charAt(0)) + label.substring(1);
}
}

View File

@ -225,28 +225,17 @@ Changelog" />
android:drawableRight="@drawable/ic_expand_more_grey600"
android:drawableEnd="@drawable/ic_expand_more_grey600" />
<TextView
android:id="@+id/permissions_list"
<LinearLayout
android:id="@+id/permission_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:orientation="vertical"
android:fontFamily="sans-serif-light"
android:textSize="14sp"
android:visibility="gone"
android:layout_marginLeft="@dimen/layout_horizontal_margin"
android:layout_marginStart="@dimen/layout_horizontal_margin"
tools:text=" * Full network access
* View network connections
* View Wi-Fi connections
* Connect and disconnect from Wi-Fi
* Pair with Bluetooth devices
* Run at startup
* Modify or delete the contents of your USB storage
* Control Near Field Communication
* Directly install apps
* Delete apps
* Full permission to all device features and storage
* Test access to protected storage" />
android:paddingEnd="4dp"
android:paddingRight="4dp"
tools:ignore="RtlSymmetry" />
</LinearLayout>