summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/utils
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2015-06-17 13:51:52 -0400
committerJason Monk <jmonk@google.com>2015-06-17 14:45:32 -0400
commit6dc9e5007de25dd9dd8fd6ebc42d9322069a9a38 (patch)
tree6ed8d6a43de21013569796b9f8c898c0bdd6c4d5 /src/com/android/packageinstaller/permission/utils
parent6e5d5f06c14acb48baf97e46aa63bf84cc04c2c1 (diff)
downloadandroid_packages_apps_PackageInstaller-6dc9e5007de25dd9dd8fd6ebc42d9322069a9a38.tar.gz
android_packages_apps_PackageInstaller-6dc9e5007de25dd9dd8fd6ebc42d9322069a9a38.tar.bz2
android_packages_apps_PackageInstaller-6dc9e5007de25dd9dd8fd6ebc42d9322069a9a38.zip
Link from location permission to settings for loc providers
Bug: 21805447 Change-Id: I27aed860b73d99976479793076852aecbf0be5a2
Diffstat (limited to 'src/com/android/packageinstaller/permission/utils')
-rw-r--r--src/com/android/packageinstaller/permission/utils/LocationUtils.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/permission/utils/LocationUtils.java b/src/com/android/packageinstaller/permission/utils/LocationUtils.java
new file mode 100644
index 00000000..4c4ea6e3
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/utils/LocationUtils.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+package com.android.packageinstaller.permission.utils;
+
+import android.Manifest;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.location.ILocationManager;
+import android.location.LocationManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.provider.Settings;
+
+import com.android.packageinstaller.R;
+
+import java.util.ArrayList;
+
+public class LocationUtils {
+
+ public static final String LOCATION_PERMISSION = Manifest.permission_group.LOCATION;
+
+ public static ArrayList<String> getLocationProviders() {
+ ArrayList<String> providers = new ArrayList<>();
+ Resources res = Resources.getSystem();
+ providers.add(res.getString(
+ com.android.internal.R.string.config_networkLocationProviderPackageName));
+
+ for (String provider :
+ res.getStringArray(com.android.internal.R.array.config_locationProviderPackageNames)) {
+ providers.add(provider);
+ }
+
+ return providers;
+ }
+
+ public static void showLocationDialog(final Context context, CharSequence label) {
+ new AlertDialog.Builder(context)
+ .setIcon(com.android.internal.R.drawable.ic_dialog_alert_material)
+ .setTitle(android.R.string.dialog_alert_title)
+ .setMessage(context.getString(R.string.location_warning, label))
+ .setNegativeButton(R.string.ok, null)
+ .setPositiveButton(R.string.location_settings, new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
+ }
+ })
+ .show();
+ }
+
+ public static boolean isLocationEnabled(Context context) {
+ return Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE,
+ Settings.Secure.LOCATION_MODE_OFF) != Settings.Secure.LOCATION_MODE_OFF;
+ }
+
+ public static boolean isLocked(String groupName, String packageName) {
+ return LOCATION_PERMISSION.equals(groupName) && isNetworkLocationProvider(packageName);
+ }
+
+ private static boolean isNetworkLocationProvider(String packageName) {
+ ILocationManager locationService = ILocationManager.Stub.asInterface(
+ ServiceManager.getService(Context.LOCATION_SERVICE));
+ try {
+ return packageName.equals(locationService.getNetworkProviderPackage());
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+}