android - 允许后立即调用方法
问题描述
我有这样的代码
public void onClick(View v) {
String fileName = edtFileName.getText().toString() ;
String content = edtContent.getText().toString();
if (canReadAndWrite())
createFile(fileName,content);
}
当用户单击按钮时,应用程序会向他/她请求许可,但 canReadAndWrite() 方法第一次返回 false 。我该如何解决这个问题?我可以使用 onRequestPermissionsResult 但这似乎不合理,因为我不知道用户单击按钮的位置(如果我们有很多方法和按钮),文件名和内容等变量也是本地的,我必须将另一个变量声明为 global 。这是我的权限功能代码
if (Build.VERSION.SDK_INT <=23){
return true;
}else {
if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED){
return true;
}else {
ActivityCompat.requestPermissions(this
,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1234);
return false;
}
}
解决方案
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1234:
if(grantResults[0] == == PackageManager.PERMISSION_GRANTED){
//Do what ever you want to do...
}
break;
}
}
推荐阅读
- javascript - 如何将淡入淡出添加到内部 HTML?
- reactjs - 无法在我的自定义域上打开 Google App Engine 应用程序
- caching - How to cache images from an API response
- javascript - SQL query based on select option
- excel - Excel VBA import several TXT file delimited text into sheet
- python - Django - Filter based on nested sum of related values
- azure-cosmosdb - Cosmos DB - How to access fields that have a space in their name?
- javascript - How to export content as a doc file from a text area?
- php - Class not found while using composer and docker
- python - Getting "ImportError: cannot import name ..." when importing variable from other script