Skip to content

Commit 3650c4e

Browse files
committed
Add runtime permission support to gallery sample.
1 parent b01ac7b commit 3650c4e

File tree

3 files changed

+66
-13
lines changed

3 files changed

+66
-13
lines changed

checkstyle.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,9 @@
127127

128128
<!-- Checks for blocks. -->
129129
<!-- See http://checkstyle.sourceforge.net/config_blocks.html -->
130-
<module name="AvoidNestedBlocks" />
130+
<module name="AvoidNestedBlocks">
131+
<property name="allowInSwitchCase" value="true" />
132+
</module>
131133
<module name="EmptyBlock" >
132134
<property name="option" value="text"/>
133135
</module>
Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,70 @@
11
package com.bumptech.glide.samples.gallery;
22

3+
import android.Manifest.permission;
4+
import android.annotation.TargetApi;
5+
import android.content.pm.PackageManager;
6+
import android.os.Build;
37
import android.os.Bundle;
8+
import android.support.annotation.NonNull;
9+
import android.support.v4.app.ActivityCompat;
10+
import android.support.v4.app.Fragment;
411
import android.support.v4.app.FragmentActivity;
12+
import android.support.v4.content.ContextCompat;
13+
import android.widget.Toast;
514
import com.bumptech.glide.MemoryCategory;
615

716
/**
817
* Displays a {@link HorizontalGalleryFragment}.
918
*/
1019
public class MainActivity extends FragmentActivity {
1120

12-
@Override
13-
protected void onCreate(Bundle savedInstanceState) {
14-
super.onCreate(savedInstanceState);
15-
setContentView(R.layout.main_activity);
16-
GlideApp.get(this).setMemoryCategory(MemoryCategory.HIGH);
21+
private static final int REQUEST_READ_STORAGE = 0;
22+
23+
@Override
24+
protected void onCreate(Bundle savedInstanceState) {
25+
super.onCreate(savedInstanceState);
26+
setContentView(R.layout.main_activity);
27+
GlideApp.get(this).setMemoryCategory(MemoryCategory.HIGH);
28+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
29+
&& ContextCompat.checkSelfPermission(this, permission.READ_EXTERNAL_STORAGE)
30+
!= PackageManager.PERMISSION_GRANTED) {
31+
requestStoragePermission();
32+
} else {
33+
replaceFragment();
34+
}
35+
}
36+
37+
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
38+
private void requestStoragePermission() {
39+
ActivityCompat.requestPermissions(this,
40+
new String[]{permission.READ_EXTERNAL_STORAGE},
41+
REQUEST_READ_STORAGE);
42+
}
43+
44+
private void replaceFragment() {
45+
Fragment fragment = new HorizontalGalleryFragment();
46+
getSupportFragmentManager()
47+
.beginTransaction()
48+
.replace(R.id.fragment_container, fragment)
49+
.commit();
50+
}
51+
52+
@Override
53+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
54+
@NonNull int[] grantResults) {
55+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
56+
switch (requestCode) {
57+
case REQUEST_READ_STORAGE: {
58+
// If request is cancelled, the result arrays are empty.
59+
if (grantResults.length > 0
60+
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
61+
replaceFragment();
62+
} else {
63+
Toast.makeText(this, "Storage permission is required", Toast.LENGTH_LONG)
64+
.show();
65+
requestStoragePermission();
66+
}
67+
}
1768
}
69+
}
1870
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<merge xmlns:android="http://schemas.android.com/apk/res/android">
3-
<fragment
4-
android:name="com.bumptech.glide.samples.gallery.HorizontalGalleryFragment"
5-
android:layout_width="match_parent"
6-
android:layout_height="match_parent"
7-
android:id="@+id/horizontal_gallery_fragment"/>
8-
</merge>
2+
<FrameLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
android:id="@+id/fragment_container"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent">
7+
</FrameLayout>

0 commit comments

Comments
 (0)