1717
1818import android .content .ActivityNotFoundException ;
1919import android .content .Intent ;
20+ import android .content .pm .PackageManager ;
2021import android .database .Cursor ;
2122import android .net .Uri ;
2223import android .provider .OpenableColumns ;
24+ import android .support .v4 .app .ActivityCompat ;
25+ import android .support .v4 .content .ContextCompat ;
2326import android .support .v7 .app .AppCompatActivity ;
2427import android .util .Log ;
2528import android .widget .Toast ;
@@ -47,8 +50,10 @@ public class PDFViewActivity extends AppCompatActivity implements OnPageChangeLi
4750 private static final String TAG = PDFViewActivity .class .getSimpleName ();
4851
4952 private final static int REQUEST_CODE = 42 ;
53+ public static final int PERMISSION_CODE = 42042 ;
5054
5155 public static final String SAMPLE_FILE = "sample.pdf" ;
56+ public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE" ;
5257
5358 @ ViewById
5459 PDFView pdfView ;
@@ -63,6 +68,23 @@ public class PDFViewActivity extends AppCompatActivity implements OnPageChangeLi
6368
6469 @ OptionsItem (R .id .pickFile )
6570 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 () {
6688 Intent intent = new Intent (Intent .ACTION_GET_CONTENT );
6789 intent .setType ("application/pdf" );
6890 try {
@@ -168,4 +190,22 @@ public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
168190 }
169191 }
170192 }
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+
171211}
0 commit comments