原文链接:http://blog.csdn.net/android_hdh/article/details/52583557
 
-------------------------------
 
 
 最近在开发项目时,项目需要获取系统的WRITE_EXTERNAL_STORAGE权限,然后就在清单文件AndroidManifest中添加了该权限,但是在系统运行后发现并没有创建该有的文件,然后查看了一下日志发现系统提示没有获得权限,之后在网上搜索了下发现Android6.0之后需要动态获取这种权限,然后改了一下果真可以了,下面把动态获取权限的过程讲解一下,以备将来查看和帮助哪些遇到同样问题的人。
 
 下面贴出请求动态获取权限的代码
 
 自己定义的请求Code 
 
  -  private final static int REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE=0x123;  
  
 
 
 
 
 
  -  if(Build.VERSION.SDK_INT >= 23){  
-              int checkWriteStoragePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);  
-              if(checkWriteStoragePermission != PackageManager.PERMISSION_GRANTED){  
-                  ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE);  
-                  return;  
-              }else{  
-                  initEvent();  
-              }  
-          }else {  
-              initEvent();  
-          }  
  
 
 当触发了获取该权限的操作时会弹出一个提示框,会询问你是否允许添加该种权限,具体如下图
 
 
 
 然而,我们如何知道用户是点了什么呢?这里我们需要重写一下事件onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){}
 
 通过该事件来回调监听用户的操作
 
 
 
  -  @Override  
-     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  
-         switch (requestCode){  
-             case REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE:  
-                 if(grantResults[0] == PackageManager.PERMISSION_GRANTED){  
-                     initEvent();  
-                 }else{  
-                     finish();  
-                 }  
-                 break;  
-             default:  
-                 super.onRequestPermissionsResult(requestCode, permissions, grantResults);  
-         }  
-     }  
  
这里grantResults[0] 的结果有两种一种是授权,一种是阻止,当授权时就执行你的相应操作,否则就关闭程序。 
 
 
 好了关于动态获取权限的流程就是这些,如果你觉得有用就顶一个吧,哈哈