public class MainActivity extends AppCompatActivity { private List<String> missingPermission = new ArrayList<>(10); private static final String[] REQUIRED_PERMISSION_LIST = new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, }; private final int REQUEST_PERMISSION_CODE = 12345; private final int REQUEST_QR_CAPTURE_CODE = 12000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); checkAndRequestPermissions(); } /** * 檢查權限是否缺失,並申請 */ private void checkAndRequestPermissions() { for (String eachPermission : REQUIRED_PERMISSION_LIST) { if (ContextCompat.checkSelfPermission(this, eachPermission) != PackageManager.PERMISSION_GRANTED) { missingPermission.add(eachPermission); } } if (missingPermission.isEmpty()) { onRequestPermissionsSuccess(); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { ActivityCompat.requestPermissions(this, missingPermission.toArray(new String[missingPermission.size()]), REQUEST_PERMISSION_CODE); } } /** * 申請權限結果回調 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_PERMISSION_CODE) { for (int i = grantResults.length - 1; i >= 0; i--) { if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { missingPermission.remove(permissions[i]); } } } if (missingPermission.isEmpty()) { onRequestPermissionsSuccess(); } else { finish(); } } /** * 完成權限申請 */ public void onRequestPermissionsSuccess() { FileUtil.createFolder(Constants.PATH_APP); } }
動態6.0以及以上動態申請權限
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.