summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2016-03-10 16:11:39 -0800
committerDanesh M <daneshm90@gmail.com>2016-03-14 09:51:59 -0800
commitfde0e1ecc4419f1e6796f1aa5173c9963abf8de9 (patch)
treeda30a36f9bfb87cbc21ec17e01375f49a4488149
parent242fc38f8da7fc86201b5450b9b964f93844ba6d (diff)
downloadpackages_apps_LockClock-fde0e1ecc4419f1e6796f1aa5173c9963abf8de9.zip
packages_apps_LockClock-fde0e1ecc4419f1e6796f1aa5173c9963abf8de9.tar.gz
packages_apps_LockClock-fde0e1ecc4419f1e6796f1aa5173c9963abf8de9.tar.bz2
LockClock : Add external facing permission grant activity
Needed by SystemUI when toggling status bar weather. CYNGNOS-2222 Change-Id: I693938fcc87f12d77f8e9245dfb8456925103797
-rw-r--r--AndroidManifest.xml6
-rw-r--r--src/com/cyanogenmod/lockclock/weather/PermissionRequestActivity.java75
2 files changed, 81 insertions, 0 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c15f9de..5b75d91 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -71,6 +71,12 @@
android:taskAffinity=""
android:excludeFromRecents="true" />
+ <activity android:name=".weather.PermissionRequestActivity"
+ android:theme="@android:style/Theme.Translucent.NoTitleBar"
+ android:excludeFromRecents="true"
+ android:noHistory="true"
+ android:exported="true" />
+
<!-- The Widget receiver -->
<receiver android:name=".ClockWidgetProvider" >
<meta-data android:name="android.appwidget.provider" android:resource="@xml/lock_clock" />
diff --git a/src/com/cyanogenmod/lockclock/weather/PermissionRequestActivity.java b/src/com/cyanogenmod/lockclock/weather/PermissionRequestActivity.java
new file mode 100644
index 0000000..0cf7be8
--- /dev/null
+++ b/src/com/cyanogenmod/lockclock/weather/PermissionRequestActivity.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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.cyanogenmod.lockclock.weather;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.ResultReceiver;
+
+public class PermissionRequestActivity extends Activity {
+
+ private static final String RESULT_RECEIVER_EXTRA = "result_receiver";
+ private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;
+
+ private ResultReceiver mResultReceiver;
+ private int mResult = RESULT_CANCELED;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (hasLocationPermission()) {
+ finish();
+ return;
+ }
+
+ mResultReceiver = getIntent().getParcelableExtra(RESULT_RECEIVER_EXTRA);
+ if (mResultReceiver == null) {
+ finish();
+ return;
+ }
+
+ String[] permissions = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION};
+ requestPermissions(permissions, LOCATION_PERMISSION_REQUEST_CODE);
+ }
+
+ public boolean hasLocationPermission() {
+ return checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ int[] grantResults) {
+ if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
+ if (grantResults.length > 0
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ mResult = RESULT_OK;
+ }
+ }
+ finish();
+ }
+
+ @Override
+ public void finish() {
+ if (mResultReceiver != null) {
+ mResultReceiver.send(mResult, null);
+ }
+ super.finish();
+ }
+}