1
1
package com .halzhang .android .examples .permissionexample ;
2
2
3
+ import android .Manifest ;
4
+ import android .content .pm .PackageManager ;
3
5
import android .os .Bundle ;
6
+ import android .os .Environment ;
4
7
import android .support .design .widget .FloatingActionButton ;
5
8
import android .support .design .widget .Snackbar ;
9
+ import android .support .v4 .app .ActivityCompat ;
6
10
import android .support .v7 .app .AppCompatActivity ;
7
11
import android .support .v7 .widget .Toolbar ;
8
- import android .view . View ;
12
+ import android .util . Log ;
9
13
import android .view .Menu ;
10
14
import android .view .MenuItem ;
15
+ import android .view .View ;
16
+ import android .widget .Button ;
17
+
18
+ import org .apache .commons .io .FileUtils ;
19
+
20
+ import java .io .File ;
11
21
12
22
public class MainActivity extends AppCompatActivity {
13
23
24
+ private static final int REQUEST_STORAGE = 1 ;
25
+ private static final String [] STORAGE_PERMISSION = {Manifest .permission .WRITE_EXTERNAL_STORAGE , Manifest .permission .READ_EXTERNAL_STORAGE };
26
+
27
+
28
+ private Button mStorageBtn ;
29
+ private Button mPhoneBtn ;
30
+
14
31
@ Override
15
32
protected void onCreate (Bundle savedInstanceState ) {
16
33
super .onCreate (savedInstanceState );
@@ -26,6 +43,58 @@ public void onClick(View view) {
26
43
.setAction ("Action" , null ).show ();
27
44
}
28
45
});
46
+ mStorageBtn = (Button ) findViewById (R .id .btn_storage );
47
+ mStorageBtn .setOnClickListener (new View .OnClickListener () {
48
+ @ Override
49
+ public void onClick (View v ) {
50
+ writeFile ();
51
+ }
52
+ });
53
+ mPhoneBtn = (Button ) findViewById (R .id .btn_phone );
54
+
55
+ }
56
+
57
+ private void writeFile () {
58
+ if (ActivityCompat .checkSelfPermission (this , Manifest .permission .WRITE_EXTERNAL_STORAGE ) != PackageManager .PERMISSION_GRANTED
59
+ || ActivityCompat .checkSelfPermission (this , Manifest .permission .READ_EXTERNAL_STORAGE ) != PackageManager .PERMISSION_GRANTED ) {
60
+ //未授权,请求权限
61
+ requestStoragePermission ();
62
+ } else {
63
+ File file = new File (Environment .getExternalStorageDirectory (), "temp.txt" );
64
+ try {
65
+ FileUtils .writeStringToFile (file , "Hello Runtime Permission" );
66
+ Log .i ("PermissionExample" , "Write file success!" );
67
+ } catch (Exception e ) {
68
+ e .printStackTrace ();
69
+ }
70
+ }
71
+ }
72
+
73
+ private void requestStoragePermission () {
74
+ if (ActivityCompat .shouldShowRequestPermissionRationale (this , Manifest .permission .WRITE_EXTERNAL_STORAGE )
75
+ || ActivityCompat .shouldShowRequestPermissionRationale (this , Manifest .permission .READ_EXTERNAL_STORAGE )) {
76
+ Snackbar .make (mStorageBtn , "请求存储权限" , Snackbar .LENGTH_LONG ).setAction (android .R .string .ok , new View .OnClickListener () {
77
+ @ Override
78
+ public void onClick (View v ) {
79
+ ActivityCompat .requestPermissions (MainActivity .this , STORAGE_PERMISSION , REQUEST_STORAGE );
80
+ }
81
+ }).show ();
82
+ } else {
83
+ ActivityCompat .requestPermissions (this , STORAGE_PERMISSION , REQUEST_STORAGE );
84
+ }
85
+ }
86
+
87
+ @ Override
88
+ public void onRequestPermissionsResult (int requestCode , String [] permissions , int [] grantResults ) {
89
+ super .onRequestPermissionsResult (requestCode , permissions , grantResults );
90
+ if (requestCode == REQUEST_STORAGE ) {
91
+ if (Utils .verifyPermission (grantResults )) {
92
+ Snackbar .make (mStorageBtn , "授权成功" , Snackbar .LENGTH_LONG ).show ();
93
+ writeFile ();
94
+ } else {
95
+ Snackbar .make (mStorageBtn , "授权失败" , Snackbar .LENGTH_LONG ).show ();
96
+ }
97
+ }
29
98
}
30
99
31
100
@ Override
0 commit comments