android - 如果用户未授予 WRITE_EXTERNAL_STORAGE 权限,则关闭应用
android - close app if user not granting WRITE_EXTERNAL_STORAGE permission
in android 6 or above 当用户第一次打开应用程序时询问他一些权限
如果他不允许则退出应用程序
我的应用程序必须有一些权限是读写外部存储,如何实现这个
我试过这个
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(LoginActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(LoginActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(LoginActivity.this,
new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE},
1);
} else {
//do something
}
} else {
//do something
}
您需要读取结果 onRequestPermissionsResult()
,如果用户拒绝权限,请调用 context.finish()
或 context.finishAffinity()
。
就像是...
编辑:查看文档以了解如何处理权限:Android 6 Permissions
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case MAIN_PERMISSIONS:
if (grantResults.length > 0) {
// Validate the permissions result
if (permissionsOk) {
// All good
} else {
// Close your app
closeNow();
}
}
break;
}
}
private void closeNow() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
}
使用@G 的建议。布里西达-林斯
我解决了它,如果其他人需要同样的东西,我会在这里写下我的答案,
这是我在 MainActivity 中编写的所有代码:
if(Build.VERSION.SDK_INT >= 23)
{
if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE},
1);
}
else
{
//do something
}
}
}
这是覆盖方法 onRequestPermissionsResult:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch(requestCode)
{
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
// i am creating folder in external storage here
File create_dir=new File(Environment.getExternalStorageDirectory()+"/uca/");
Toast.makeText(this,"creating",Toast.LENGTH_LONG).show();
create_dir.mkdirs();
}
else
{
closeNow();
}
break;
}
}
现在关闭方法:
private void closeNow() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
{
finishAffinity();
}
else
{
finish();
}
}
您的应用程序因运行时异常而不是由于权限而关闭。只需在 运行 应用程序时打开 logcat 并检查异常或错误。
希望对你有用。
in android 6 or above 当用户第一次打开应用程序时询问他一些权限 如果他不允许则退出应用程序
我的应用程序必须有一些权限是读写外部存储,如何实现这个
我试过这个
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(LoginActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(LoginActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(LoginActivity.this,
new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE},
1);
} else {
//do something
}
} else {
//do something
}
您需要读取结果 onRequestPermissionsResult()
,如果用户拒绝权限,请调用 context.finish()
或 context.finishAffinity()
。
就像是...
编辑:查看文档以了解如何处理权限:Android 6 Permissions
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case MAIN_PERMISSIONS:
if (grantResults.length > 0) {
// Validate the permissions result
if (permissionsOk) {
// All good
} else {
// Close your app
closeNow();
}
}
break;
}
}
private void closeNow() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
}
使用@G 的建议。布里西达-林斯
我解决了它,如果其他人需要同样的东西,我会在这里写下我的答案,
这是我在 MainActivity 中编写的所有代码:
if(Build.VERSION.SDK_INT >= 23)
{
if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE},
1);
}
else
{
//do something
}
}
}
这是覆盖方法 onRequestPermissionsResult:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch(requestCode)
{
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
// i am creating folder in external storage here
File create_dir=new File(Environment.getExternalStorageDirectory()+"/uca/");
Toast.makeText(this,"creating",Toast.LENGTH_LONG).show();
create_dir.mkdirs();
}
else
{
closeNow();
}
break;
}
}
现在关闭方法:
private void closeNow() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
{
finishAffinity();
}
else
{
finish();
}
}
您的应用程序因运行时异常而不是由于权限而关闭。只需在 运行 应用程序时打开 logcat 并检查异常或错误。
希望对你有用。