我试图获得在棉花糖中绘制覆盖层的权限。
在棉花糖中,我们必须为绘图叠加层赋予运行时权限,并且我已经实现了。我遇到的问题是,如果我下次检查应用程序的以下代码,则if(Settings.canDrawOverlays(getApplicationContext())返回错误。
但是在设置(覆盖其他应用程序)中,我的应用程序已选中。在这里,我提供了我的lib活动代码。
if(Settings.canDrawOverlays(getApplicationContext())&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
Toast.makeText(getApplicationContext(), "Windows Overlay allowed" , Toast.LENGTH_SHORT).show();
startService(new Intent(this, FABService.class));
finish();
}
else{
startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION), 1);
}
我的onActivityResult是,
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
/** check if received result code
is equal our requested code for draw permission */
if (requestCode == 1) {
// * if so check once again if we have permission /
if (Settings.canDrawOverlays(getApplicationContext()) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// continue here - permission was granted
Toast.makeText(getApplicationContext(), "Windows Overlay allowed", Toast.LENGTH_LONG).show();
startService(new Intent(this, FABService.class));
finish();
}
}
}
我已经在该应用程序的lib中实现了这些代码。任何人都可以帮助我哪里出错了。
最佳答案
将权限放入清单
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
将此用于覆盖权限
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
// Show alert dialog to the user saying a separate permission is needed
// Launch the settings activity if the user prefers
Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(myIntent);
}
关于java - 如何从棉花糖中的应用程序库获取绘图覆盖权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39159029/