17
17
18
18
import android .content .ActivityNotFoundException ;
19
19
import android .content .Intent ;
20
+ import android .content .pm .PackageManager ;
20
21
import android .database .Cursor ;
21
22
import android .net .Uri ;
22
23
import android .provider .OpenableColumns ;
24
+ import android .support .v4 .app .ActivityCompat ;
25
+ import android .support .v4 .content .ContextCompat ;
23
26
import android .support .v7 .app .AppCompatActivity ;
24
27
import android .util .Log ;
25
28
import android .widget .Toast ;
@@ -47,8 +50,10 @@ public class PDFViewActivity extends AppCompatActivity implements OnPageChangeLi
47
50
private static final String TAG = PDFViewActivity .class .getSimpleName ();
48
51
49
52
private final static int REQUEST_CODE = 42 ;
53
+ public static final int PERMISSION_CODE = 42042 ;
50
54
51
55
public static final String SAMPLE_FILE = "sample.pdf" ;
56
+ public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE" ;
52
57
53
58
@ ViewById
54
59
PDFView pdfView ;
@@ -63,6 +68,23 @@ public class PDFViewActivity extends AppCompatActivity implements OnPageChangeLi
63
68
64
69
@ OptionsItem (R .id .pickFile )
65
70
void pickFile () {
71
+ int permissionCheck = ContextCompat .checkSelfPermission (this ,
72
+ READ_EXTERNAL_STORAGE );
73
+
74
+ if (permissionCheck != PackageManager .PERMISSION_GRANTED ) {
75
+ ActivityCompat .requestPermissions (
76
+ this ,
77
+ new String []{READ_EXTERNAL_STORAGE },
78
+ PERMISSION_CODE
79
+ );
80
+
81
+ return ;
82
+ }
83
+
84
+ launchPicker ();
85
+ }
86
+
87
+ void launchPicker () {
66
88
Intent intent = new Intent (Intent .ACTION_GET_CONTENT );
67
89
intent .setType ("application/pdf" );
68
90
try {
@@ -168,4 +190,22 @@ public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
168
190
}
169
191
}
170
192
}
193
+
194
+ /**
195
+ * Listener for response to user permission request
196
+ * @param requestCode Check that permission request code matches
197
+ * @param permissions Permissions that requested
198
+ * @param grantResults Whether permissions granted
199
+ */
200
+ @ Override
201
+ public void onRequestPermissionsResult (int requestCode , String permissions [],
202
+ int [] grantResults ) {
203
+ if (requestCode == PERMISSION_CODE ) {
204
+ if (grantResults .length > 0
205
+ && grantResults [0 ] == PackageManager .PERMISSION_GRANTED ) {
206
+ launchPicker ();
207
+ }
208
+ }
209
+ }
210
+
171
211
}
0 commit comments