Skip to content

Commit 8208fc1

Browse files
committed
Hacked in some nicer handling for when the "Access to Files" permission is denied
1 parent c797b9f commit 8208fc1

File tree

12 files changed

+56
-11
lines changed

12 files changed

+56
-11
lines changed

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
buildscript {
44
repositories {
55
mavenCentral()
6+
jcenter()
67
}
78
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.2.2'
9+
classpath 'com.android.tools.build:gradle:2.3.0-alpha1'
910
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2'
1011
}
1112
}
@@ -16,5 +17,6 @@ allprojects {
1617
maven {
1718
url "https://jitpack.io"
1819
}
20+
jcenter()
1921
}
2022
}

dataprovider/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ apply plugin: 'com.android.library'
1818

1919
android {
2020
compileSdkVersion 25
21-
buildToolsVersion '24.0.3'
21+
buildToolsVersion '25.0.0'
2222
defaultConfig {
2323
minSdkVersion 14
2424
targetSdkVersion 25

dataprovider/src/main/java/com/musenkishi/wally/dataprovider/FileManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public boolean fileExists(String filename){
3939
myDir.mkdirs();
4040
File[] listOfFiles = myDir.listFiles();
4141

42+
if(listOfFiles == null) {
43+
return false;
44+
}
45+
4246
for (File file : listOfFiles)
4347
{
4448
if (file.isFile())

models/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ apply plugin: 'android-apt'
1919

2020
android {
2121
compileSdkVersion 25
22-
buildToolsVersion '24.0.3'
22+
buildToolsVersion '25.0.0'
2323
defaultConfig {
2424
minSdkVersion 14
2525
targetSdkVersion 25

wally/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ android {
3636
exclude 'META-INF/LGPL2.1'
3737
}
3838
compileSdkVersion 25
39-
buildToolsVersion '24.0.3'
39+
buildToolsVersion '25.0.0'
4040
def Properties versionProps = new Properties()
4141
versionProps.load(new FileInputStream(file('version.properties')))
4242
defaultConfig {

wally/src/main/java/com/musenkishi/wally/activities/ImageDetailsActivity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,12 @@ public void onClick(View v) {
653653

654654
private void saveToFile(final int handlerCode) {
655655
currentHandlerCode = handlerCode;
656+
657+
if (!isStoragePermissionGranted()) {
658+
Toast.makeText(this, getString(R.string.storagePermissionError), Toast.LENGTH_LONG).show();
659+
return;
660+
}
661+
656662
SaveImageRequest saveImageRequest = WallyApplication
657663
.getDataProviderInstance()
658664
.downloadImageIfNeeded(

wally/src/main/java/com/musenkishi/wally/fragments/LatestFragment.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import com.musenkishi.wally.activities.ImageDetailsActivity;
4545
import com.musenkishi.wally.activities.MainActivity;
4646
import com.musenkishi.wally.adapters.RecyclerImagesAdapter;
47+
import com.musenkishi.wally.base.BaseActivity;
4748
import com.musenkishi.wally.base.GridFragment;
4849
import com.musenkishi.wally.base.WallyApplication;
4950
import com.musenkishi.wally.dataprovider.DataProvider;
@@ -65,7 +66,7 @@
6566

6667
/**
6768
* ToplistFragment is responsible for showing the user the toplist of wallpapers.
68-
*
69+
* <p>
6970
* Created by Freddie (Musenkishi) Lust-Hed on 2014-02-28
7071
*/
7172
public class LatestFragment extends GridFragment implements RecyclerImagesAdapter.OnSaveButtonClickedListener, Handler.Callback, OnFileChangeListener, OnFiltersChangeListener {
@@ -118,7 +119,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, final Bun
118119
if (rootView != null) {
119120
super.onCreateView(rootView);
120121
setupAutoSizeGridView();
121-
if (savedInstanceState != null && savedInstanceState.containsKey(STATE_IMAGES)){
122+
if (savedInstanceState != null && savedInstanceState.containsKey(STATE_IMAGES)) {
122123
Message msgObj = uiHandler.obtainMessage();
123124
msgObj.what = MSG_IMAGES_REQUEST_CREATE;
124125
msgObj.arg1 = 1;
@@ -296,12 +297,18 @@ public void onError(DataProviderError dataProviderError) {
296297
case MSG_PAGE_RECEIVED:
297298
ImagePage imagePage = (ImagePage) msg.obj;
298299
if (imagePage != null) {
300+
301+
if (!((BaseActivity) getActivity()).isStoragePermissionGranted()) {
302+
Toast.makeText(getActivity(), getString(R.string.storagePermissionError), Toast.LENGTH_LONG).show();
303+
break;
304+
}
305+
299306
SaveImageRequest saveImageRequest = WallyApplication.getDataProviderInstance().downloadImageIfNeeded(
300307
imagePage.imagePath(),
301308
imagePage.imageId(),
302309
getResources().getString(R.string.notification_title_image_saving));
303310

304-
if (saveImageRequest.getDownloadID() != null && getActivity() instanceof MainActivity){
311+
if (saveImageRequest.getDownloadID() != null && getActivity() instanceof MainActivity) {
305312
WallyApplication.getDownloadIDs().put(saveImageRequest.getDownloadID(), imagePage.imageId());
306313
} else {
307314
getActivity().sendBroadcast(new Intent(FileReceiver.GET_FILES));

wally/src/main/java/com/musenkishi/wally/fragments/RandomImagesFragment.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import com.musenkishi.wally.activities.ImageDetailsActivity;
4646
import com.musenkishi.wally.activities.MainActivity;
4747
import com.musenkishi.wally.adapters.RecyclerImagesAdapter;
48+
import com.musenkishi.wally.base.BaseActivity;
4849
import com.musenkishi.wally.base.GridFragment;
4950
import com.musenkishi.wally.base.WallyApplication;
5051
import com.musenkishi.wally.dataprovider.DataProvider;
@@ -320,6 +321,11 @@ public void onError(DataProviderError dataProviderError) {
320321
case MSG_PAGE_RECEIVED:
321322
ImagePage imagePage = (ImagePage) msg.obj;
322323
if (imagePage != null) {
324+
if (!((BaseActivity) getActivity()).isStoragePermissionGranted()) {
325+
Toast.makeText(getActivity(), getString(R.string.storagePermissionError), Toast.LENGTH_LONG).show();
326+
break;
327+
}
328+
323329
SaveImageRequest saveImageRequest = WallyApplication.getDataProviderInstance().downloadImageIfNeeded(
324330
imagePage.imagePath(),
325331
imagePage.imageId(),

wally/src/main/java/com/musenkishi/wally/fragments/SavedImagesFragment.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
import android.content.Context;
2121
import android.content.DialogInterface;
2222
import android.content.Intent;
23+
import android.content.pm.PackageManager;
2324
import android.database.ContentObserver;
2425
import android.database.Cursor;
2526
import android.net.Uri;
27+
import android.os.Build;
2628
import android.os.Bundle;
2729
import android.os.Handler;
2830
import android.os.Message;
@@ -51,7 +53,7 @@
5153

5254
/**
5355
* SavedImagesFragment is responsible to show the user all the wallpapers that has been saved.
54-
*
56+
* <p>
5557
* Created by Musenkishi on 2014-05-11.
5658
*/
5759
public class SavedImagesFragment extends GridFragment implements Handler.Callback, ActionMode.Callback {
@@ -138,7 +140,7 @@ public boolean onMenuItemClick(MenuItem item) {
138140
});
139141
}
140142

141-
if (!BuildConfig.BUILD_TYPE.equalsIgnoreCase("release")){
143+
if (!BuildConfig.BUILD_TYPE.equalsIgnoreCase("release")) {
142144
menu.add("Wally " + BuildConfig.VERSION_NAME);
143145
}
144146

@@ -209,11 +211,17 @@ private void setupHandlers() {
209211

210212
@Override
211213
protected void getImages(int index, String query) {
212-
if (!uiHandler.hasMessages(GET_IMAGES_FROM_STORAGE)) {
214+
if (hasStoragePermission() && !uiHandler.hasMessages(GET_IMAGES_FROM_STORAGE)) {
213215
uiHandler.sendEmptyMessage(GET_IMAGES_FROM_STORAGE);
214216
}
215217
}
216218

219+
private boolean hasStoragePermission() {
220+
return Build.VERSION.SDK_INT < 23
221+
|| (getActivity().checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
222+
== PackageManager.PERMISSION_GRANTED);
223+
}
224+
217225
@Override
218226
public void onDestroy() {
219227
super.onDestroy();
@@ -234,7 +242,7 @@ public boolean handleMessage(Message msg) {
234242
mImageUri,
235243
projection,
236244
MediaStore.Images.Media.DATA + " like ? ",
237-
new String[] {"%/Wally/%"},
245+
new String[]{"%/Wally/%"},
238246
MediaStore.Audio.Media.DATE_ADDED + " DESC");
239247

240248
initObserver(cursor);

wally/src/main/java/com/musenkishi/wally/fragments/SearchFragment.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,11 @@ public void onError(DataProviderError dataProviderError) {
576576
case MSG_PAGE_RECEIVED:
577577
ImagePage imagePage = (ImagePage) msg.obj;
578578
if (imagePage != null) {
579+
if (!((BaseActivity) getActivity()).isStoragePermissionGranted()) {
580+
Toast.makeText(getActivity(), getString(R.string.storagePermissionError), Toast.LENGTH_LONG).show();
581+
break;
582+
}
583+
579584
SaveImageRequest saveImageRequest = WallyApplication.getDataProviderInstance().downloadImageIfNeeded(
580585
imagePage.imagePath(),
581586
imagePage.imageId(),

0 commit comments

Comments
 (0)