Skip to content

Commit b7b2817

Browse files
committed
Add setting to show/hide pictures in device gallery
Fix gsantner#55
1 parent 98c164c commit b7b2817

File tree

5 files changed

+63
-0
lines changed

5 files changed

+63
-0
lines changed

app/src/main/java/io/github/gsantner/memetastic/activity/SettingsActivity.java

+46
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@
22

33
import android.annotation.SuppressLint;
44
import android.app.FragmentTransaction;
5+
import android.content.ContentResolver;
56
import android.content.Context;
7+
import android.content.Intent;
68
import android.content.SharedPreferences;
9+
import android.net.Uri;
710
import android.os.Bundle;
811
import android.preference.Preference;
912
import android.preference.PreferenceFragment;
1013
import android.preference.PreferenceScreen;
14+
import android.provider.MediaStore;
1115
import android.support.design.widget.AppBarLayout;
1216
import android.support.v7.app.AppCompatActivity;
1317
import android.support.v7.widget.Toolbar;
1418
import android.view.View;
1519

20+
import java.io.File;
21+
import java.io.IOException;
1622
import java.util.Date;
1723

1824
import butterknife.BindView;
@@ -140,8 +146,48 @@ public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference prefere
140146
getActivity().finish();
141147
}
142148
}
149+
if (key.equals(getString(R.string.pref_key__is_show_in_gallery))) {
150+
boolean showInGallery = settings.getDefaultPreferences().getBoolean(key, true);
151+
File memeDirectory = AssetUpdater.getMemesDir(AppSettings.get());
152+
File noMediaFile = new File(memeDirectory, ".nomedia");
153+
if (showInGallery) {
154+
noMediaFile.delete();
155+
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(memeDirectory, ".nomedia"))));
156+
File[] files = memeDirectory.listFiles();
157+
for (int i = 0; i < files.length; i++) {
158+
deleteFileFromMediaStore(context.getContentResolver(), files[i]);
159+
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(files[i])));
160+
}
161+
} else {
162+
try {
163+
noMediaFile.createNewFile();
164+
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(noMediaFile)));
165+
} catch (IOException e) {
166+
e.printStackTrace();
167+
}
168+
}
169+
}
143170
}
144171
return super.onPreferenceTreeClick(screen, preference);
145172
}
146173
}
174+
175+
public static void deleteFileFromMediaStore(final ContentResolver contentResolver, final File file) {
176+
String canonicalPath;
177+
try {
178+
canonicalPath = file.getCanonicalPath();
179+
} catch (IOException e) {
180+
canonicalPath = file.getAbsolutePath();
181+
}
182+
final Uri uri = MediaStore.Files.getContentUri("external");
183+
final int result = contentResolver.delete(uri,
184+
MediaStore.Files.FileColumns.DATA + "=?", new String[]{canonicalPath});
185+
if (result == 0) {
186+
final String absolutePath = file.getAbsolutePath();
187+
if (!absolutePath.equals(canonicalPath)) {
188+
contentResolver.delete(uri,
189+
MediaStore.Files.FileColumns.DATA + "=?", new String[]{absolutePath});
190+
}
191+
}
192+
}
147193
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24.0"
5+
android:viewportHeight="24.0">
6+
<path
7+
android:fillColor="#FF000000"
8+
android:pathData="M22,16L22,4c0,-1.1 -0.9,-2 -2,-2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zM11,12l2.03,2.71L16,11l4,5L8,16l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6L2,6z"/>
9+
</vector>

app/src/main/res/values/strings-not_translatable.xml

+1
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,6 @@
7070
<string name="pref_key__is_migrated" translatable="false">pref_key__is_migrated</string>
7171
<string name="pref_key__download_assets_try" translatable="false">pref_key__download_assets_try</string>
7272
<string name="pref_key__memelist_view_type" translatable="false">pref_key__memelist_view_type</string>
73+
<string name="pref_key__is_show_in_gallery" translatable="false">pref_key__is_show_in_gallery</string>
7374

7475
</resources>

app/src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
<string name="pref_title__thumbnail_quality__percent">Thumbnail quality</string>
9797
<string name="pref_summary__memelist_view_type">Set view type (Picture grid, Rows with title)</string>
9898
<string name="pref_title__memelist_view_type">View Type</string>
99+
<string name="pref_title__is_show_in_gallery">Show in device gallery</string>
99100

100101
<!-- Language -->
101102
<string name="pref_title__language">Language</string>

app/src/main/res/xml/preferences_master.xml

+6
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@
9292

9393
<PreferenceCategory android:title="@string/miscellaneous">
9494

95+
<CheckBoxPreference
96+
android:defaultValue="true"
97+
android:icon="@drawable/ic_photo_library_black_24dp"
98+
android:key="@string/pref_key__is_show_in_gallery"
99+
android:title="@string/pref_title__is_show_in_gallery"/>
100+
95101
<!--suppress AndroidDomInspection -->
96102
<net.gsantner.opoc.ui.LanguagePreference
97103
android:defaultValue=""

0 commit comments

Comments
 (0)