package com.bwie.dynamicpermissionsapply; import android.Manifest; import android.content.pm.PackageManager; import android.os.Environment; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void btnPermissions(View view) { getPermissions(); } public void writeScard() { try { OutputStream os = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "xx.txt")); os.write(("哈哈哈哈哈哈哈").getBytes()); os.flush(); os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void getPermissions() { //这句话的意思就是 如果没有获得写入sdcard的权限 if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE , Manifest.permission.READ_CALENDAR}, 100); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE , Manifest.permission.READ_CALENDAR}, 100); } } else { //如果已经授权 直接读取sdcard的文件就行了 readSdcard(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 100) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { System.out.println("写入授权成功"); writeScard(); } else if (grantResults.length > 0 && grantResults[1] == PackageManager.PERMISSION_GRANTED) { System.out.println("读取授权成功"); readSdcard(); } else { Toast.makeText(this, "没有得到授权", Toast.LENGTH_SHORT).show(); } } } public void readSdcard() { try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(Environment.getExternalStorageDirectory(), "xx.txt")))); String s = br.readLine(); Toast.makeText(this, "读取到内容是:" + s, Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
动态请求权限
最新推荐文章于 2024-02-13 10:20:16 发布