summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Brabham <optedoblivion@cyngn.com>2016-01-11 14:47:10 -0500
committerMartin Brabham <optedoblivion@cyngn.com>2016-01-15 17:16:52 -0500
commit271651a56d842efad68459065cb6ce5ab80e7252 (patch)
tree4a368270e075750e7e2ee81efb2dddd3d946fb67
parent5fd5e2330ce931b1e9959fa0386be893086e3332 (diff)
downloadandroid_packages_screensavers_PhotoTable-271651a56d842efad68459065cb6ce5ab80e7252.tar.gz
android_packages_screensavers_PhotoTable-271651a56d842efad68459065cb6ce5ab80e7252.tar.bz2
android_packages_screensavers_PhotoTable-271651a56d842efad68459065cb6ce5ab80e7252.zip
Bump SDK version to 23
Implement runtime permissions for storage group Change-Id: I4645ebf2301166362b473409c75c48adc8635800 Ticket-Id: CYNGNOS-1563
-rw-r--r--AndroidManifest.xml3
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/com/android/dreams/phototable/FlipperDreamSettings.java40
3 files changed, 44 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c401ef7..0c8891e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -6,7 +6,6 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.gallery3d.permission.PICASA_STORE" />
- <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17"/>
<application
android:label="@string/app_name"
@@ -15,6 +14,7 @@
android:largeHeap="true">
<service android:name="PhotoTableDream"
android:exported="true"
+ android:permission="android.permission.BIND_DREAM_SERVICE"
android:icon="@mipmap/ic_launcher_phototable"
android:label="@string/table_screensaver_name">
<meta-data
@@ -36,6 +36,7 @@
</activity>
<service android:name="FlipperDream"
android:exported="true"
+ android:permission="android.permission.BIND_DREAM_SERVICE"
android:icon="@mipmap/ic_launcher_photoframe"
android:label="@string/flipper_screensaver_name">
<meta-data
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 392c6a9..cad67fe 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -46,4 +46,6 @@
<!-- Text shown instead of a list of albums when there are no albums with photos. [CHAR LIMIT=50] -->
<string name="no_photos">No photos on the device.</string>
+
+ <string name="storage_permissions_denied">Storage permissions denied!</string>
</resources>
diff --git a/src/com/android/dreams/phototable/FlipperDreamSettings.java b/src/com/android/dreams/phototable/FlipperDreamSettings.java
index cd24721..55fc801 100644
--- a/src/com/android/dreams/phototable/FlipperDreamSettings.java
+++ b/src/com/android/dreams/phototable/FlipperDreamSettings.java
@@ -17,6 +17,7 @@ package com.android.dreams.phototable;
import android.app.ListActivity;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.database.DataSetObserver;
import android.os.AsyncTask;
import android.os.AsyncTask.Status;
@@ -25,6 +26,8 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
+import android.widget.Toast;
+import android.Manifest;
import java.util.LinkedList;
@@ -56,7 +59,44 @@ public class FlipperDreamSettings extends ListActivity {
init();
}
+ private static final int REQUEST_CODE_STORAGE_PERMS = 321;
+ private boolean hasPermissions() {
+ int res = checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
+ return (res == PackageManager.PERMISSION_GRANTED);
+ }
+
+ private void requestNecessaryPermissions() {
+ String[] permissions = new String[] {
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ };
+ requestPermissions(permissions, REQUEST_CODE_STORAGE_PERMS);
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ int[] grandResults) {
+ boolean allowed = true;
+ switch (requestCode) {
+ case REQUEST_CODE_STORAGE_PERMS:
+ for (int res : grandResults) {
+ allowed = allowed && (res == PackageManager.PERMISSION_GRANTED);
+ }
+ break;
+ default:
+ allowed = false;
+ break;
+ }
+ if (!allowed) {
+ String text = getResources().getString(R.string.storage_permissions_denied);
+ Toast.makeText(this, text, Toast.LENGTH_LONG).show();
+ finish();
+ }
+ }
protected void init() {
+ if (!hasPermissions()) {
+ requestNecessaryPermissions();
+ return;
+ }
mPhotoSource = new PhotoSourcePlexor(this, mSettings);
setContentView(R.layout.settingslist);
if (mLoadingTask != null && mLoadingTask.getStatus() != Status.FINISHED) {