1616package com .github .barteksc .sample ;
1717
1818import android .content .Intent ;
19+ import android .content .pm .PackageManager ;
1920import android .database .Cursor ;
2021import android .net .Uri ;
2122import android .provider .OpenableColumns ;
23+ import android .support .v4 .app .ActivityCompat ;
24+ import android .support .v4 .content .ContextCompat ;
2225import android .support .v7 .app .AppCompatActivity ;
2326import android .util .Log ;
2427
@@ -45,8 +48,10 @@ public class PDFViewActivity extends AppCompatActivity implements OnPageChangeLi
4548 private static final String TAG = PDFViewActivity .class .getSimpleName ();
4649
4750 private final static int REQUEST_CODE = 42 ;
51+ public static final int PERMISSION_CODE = 42042 ;
4852
4953 public static final String SAMPLE_FILE = "sample.pdf" ;
54+ public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE" ;
5055
5156 @ ViewById
5257 PDFView pdfView ;
@@ -61,6 +66,23 @@ public class PDFViewActivity extends AppCompatActivity implements OnPageChangeLi
6166
6267 @ OptionsItem (R .id .pickFile )
6368 void pickFile () {
69+ int permissionCheck = ContextCompat .checkSelfPermission (this ,
70+ READ_EXTERNAL_STORAGE );
71+
72+ if (permissionCheck != PackageManager .PERMISSION_GRANTED ) {
73+ ActivityCompat .requestPermissions (
74+ this ,
75+ new String []{READ_EXTERNAL_STORAGE },
76+ PERMISSION_CODE
77+ );
78+
79+ return ;
80+ }
81+
82+ launchPicker ();
83+ }
84+
85+ void launchPicker () {
6486 Intent intent = new Intent (Intent .ACTION_GET_CONTENT );
6587 intent .setType ("application/pdf" );
6688 startActivityForResult (intent , REQUEST_CODE );
@@ -160,4 +182,22 @@ public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
160182 }
161183 }
162184 }
185+
186+ /**
187+ * Listener for response to user permission request
188+ * @param requestCode Check that permission request code matches
189+ * @param permissions Permissions that requested
190+ * @param grantResults Whether permissions granted
191+ */
192+ @ Override
193+ public void onRequestPermissionsResult (int requestCode , String permissions [],
194+ int [] grantResults ) {
195+ if (requestCode == PERMISSION_CODE ) {
196+ if (grantResults .length > 0
197+ && grantResults [0 ] == PackageManager .PERMISSION_GRANTED ) {
198+ launchPicker ();
199+ }
200+ }
201+ }
202+
163203}
0 commit comments