【发布时间】:2017-01-04 19:02:37
【问题描述】:
我正在开发一个在 android 上询问运行时权限的演示应用程序 棉花糖。我只是当用户拒绝权限时,用户再次获得警报对话框或至少五次点击。如果他拒绝超过五次,申请将停止。
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
if(null != actionBar){
actionBar.hide();
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_INTERNET);
}
htmlWebView = (WebView)findViewById(R.id.webView);
assert htmlWebView != null;
WebSettings webSetting = htmlWebView.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setDisplayZoomControls(true);
htmlWebView.setWebViewClient(new CustomWebViewClient());
htmlWebView.loadUrl("https://inducesmile.com/blog");
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_INTERNET) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED
) {
//start audio recording or whatever you planned to do
}else if (grantResults[0] == PackageManager.PERMISSION_DENIED){
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.RECORD_AUDIO)) {
//Show an explanation to the user *asynchronously*
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("This permission is important to record audio.")
.setTitle("Important permission required");
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_INTERNET);
dialog.dismiss();
}
}
);
builder.show();
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_INTERNET);
}else{
//Never ask again and handle your app without permission.
}
}
}
}
感谢您的帮助。
【问题讨论】:
-
通过警告对话框反复询问用户任何事情都不是一个好习惯,无论是权限还是琐碎的任务。尽量避免重复对话。
-
是的,但我需要在应用程序中使用它。
标签: android android-studio android-permissions