先上图:
对于一些危险权限在AndroidManifest清单文件中申请之后,还需要得到用户的许可并打开,才算是真正的开启了这个权限。所以可以使用动态申请权限,对于某个功能,如果需要开启某个权限,在用户使用它之前,弹窗提示用户是否要开启这个权限。
动态申请权限大致可以分为四步:
下面以申请写入外存权限为例。
-
在AndroidManifest清单文件中声明要开启的权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
检查权限是否开启,如果开启了则不需要再执行下面的步骤,直接使用功能即可。如果没有开启,那么就申请开启权限。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); }
-
接受申请开启权限的结果。文章来源:https://www.toymoban.com/news/detail-513839.html
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE) { if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "权限开启成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "权限开启失败", Toast.LENGTH_LONG).show(); } } }
完整Java代码:文章来源地址https://www.toymoban.com/news/detail-513839.html
public class MainActivity extends AppCompatActivity {
final int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE) {
if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "权限开启成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "权限开启失败", Toast.LENGTH_LONG).show();
}
}
}
}
到了这里,关于Android权限申请之动态申请权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!