From 1e8926edd95dc155d57c1306d7b13448cd895740 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Fri, 4 Mar 2016 15:54:36 +0100 Subject: [PATCH] Add permission self check --- .../tools/selfcheck/PermissionCheckGroup.java | 76 +++++++++++++++++++ .../src/main/res/layout/about_root.xml | 2 +- .../src/main/res/values-sr/strings.xml | 4 + .../src/main/res/values/strings.xml | 4 + 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 microg-ui-tools/src/main/java/org/microg/tools/selfcheck/PermissionCheckGroup.java diff --git a/microg-ui-tools/src/main/java/org/microg/tools/selfcheck/PermissionCheckGroup.java b/microg-ui-tools/src/main/java/org/microg/tools/selfcheck/PermissionCheckGroup.java new file mode 100644 index 00000000..266cf64d --- /dev/null +++ b/microg-ui-tools/src/main/java/org/microg/tools/selfcheck/PermissionCheckGroup.java @@ -0,0 +1,76 @@ +/* + * Copyright 2013-2016 microG Project Team + * + * 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. + */ + +package org.microg.tools.selfcheck; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.pm.PackageManager; +import android.content.pm.PermissionGroupInfo; +import android.content.pm.PermissionInfo; +import android.support.v4.app.Fragment; +import android.util.Log; + +import org.microg.tools.ui.R; + +import static android.os.Build.VERSION_CODES.M; +import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Negative; +import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Positive; + +@TargetApi(M) +public class PermissionCheckGroup implements SelfCheckGroup { + private static final String TAG = "SelfCheckPerms"; + + private String[] permissions; + + public PermissionCheckGroup(String... permissions) { + this.permissions = permissions; + } + + @Override + public String getGroupName(Context context) { + return context.getString(R.string.self_check_cat_permissions); + } + + @Override + public void doChecks(Context context, ResultCollector collector) { + for (String permission : permissions) { + doPermissionCheck(context, collector, permission); + } + } + + private void doPermissionCheck(Context context, ResultCollector collector, final String permission) { + PackageManager pm = context.getPackageManager(); + try { + PermissionInfo info = pm.getPermissionInfo(permission, 0); + PermissionGroupInfo groupInfo = info.group != null ? pm.getPermissionGroupInfo(info.group, 0) : null; + CharSequence permLabel = info.loadLabel(pm); + CharSequence groupLabel = groupInfo != null ? groupInfo.loadLabel(pm) : permLabel; + collector.addResult(context.getString(R.string.self_check_name_permission, permLabel), + context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED ? Positive : Negative, + context.getString(R.string.self_check_resolution_permission, groupLabel), + new SelfCheckGroup.CheckResolver() { + + @Override + public void tryResolve(Fragment fragment) { + fragment.requestPermissions(new String[]{permission}, 0); + } + }); + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, e); + } + } +} diff --git a/microg-ui-tools/src/main/res/layout/about_root.xml b/microg-ui-tools/src/main/res/layout/about_root.xml index fbbbd8b1..c731c4a7 100644 --- a/microg-ui-tools/src/main/res/layout/about_root.xml +++ b/microg-ui-tools/src/main/res/layout/about_root.xml @@ -65,7 +65,7 @@ android:paddingRight="?attr/listPreferredItemPaddingRight" android:paddingTop="16dip" android:textAppearance="@style/TextAppearance.AppCompat.Body2" - android:text="@+id/about_root_libraries" + android:text="@string/about_root_libraries" android:textColor="?attr/colorAccent"/> микроГ самопровера Провера исправности подешавања система за коришћење микроГ услуга. + + Дозволе одобрене + Дозволе за %1$s: + Тапните овде да одобрите дозволе за %1$s. Не одобравање дозвола може да резултира чудним понашањем апликација. diff --git a/microg-ui-tools/src/main/res/values/strings.xml b/microg-ui-tools/src/main/res/values/strings.xml index 47baddc5..010cb604 100644 --- a/microg-ui-tools/src/main/res/values/strings.xml +++ b/microg-ui-tools/src/main/res/values/strings.xml @@ -28,6 +28,10 @@ Self-Check Check if the system is correctly set up to use microG. + Permissions granted + Permission to %1$s: + Touch here to grant permission to %1$s. Not granting the permission can result in misbehaving applications. + microG UI Demo Summary Version v0.1.0