我试图获得在棉花糖中绘制覆盖层的权限。

在棉花糖中,我们必须为绘图叠加层赋予运行时权限,并且我已经实现了。我遇到的问题是,如果我下次检查应用程序的以下代码,则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/

10-11 22:14
查看更多