简单记录一下Android普通应用权限检查是否拥有,如果没有权限就跳转Android系统设置让用户开启。这里以
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
悬浮窗权限为例。
简单记录于此,方便自己查阅。
正文
AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
MainActivity
在MainActivity中进行权限检查和申请,下面用的申请方式必须继承AppCompatActivity
public class MainActivity extends AppCompatActivity { //略 }
private final ActivityResultLauncher<Intent> mActivityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult o) { //虽然返回,但还是再次检查 checkPermission(); } });
权限检查
private void checkPermission() { boolean canOverlays = Settings.canDrawOverlays(App.context); //判断是否有权限 if (!canOverlays) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); mActivityResultLauncher.launch(intent); }else{ //有权限,就启动悬浮窗 } }
checkPermission()的调用放onCreate()中或当需要开启悬浮窗之前都可以。