Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 权限已在设置中授予,但将被忽略_Java_Android_Permissions - Fatal编程技术网

Java 权限已在设置中授予,但将被忽略

Java 权限已在设置中授予,但将被忽略,java,android,permissions,Java,Android,Permissions,在新安装时,当我单击按钮时,它将跳过所有内容,直到 Toast.makeText(getBaseContext(), "Unable to get Permission", Toast.LENGTH_LONG).show(); 它应该请求权限,但出于某种原因,我第一次单击按钮时,它只会给我祝酒词,第二次尝试时,它请求,然后转到可以启用权限的设置。启用权限后,当您再次单击按钮时,它仍会要求启用权限。我检查了手机的设置,手机已启用,但除了第一次点击外,每次点击都会要求启用。我在清单中也有。我在AP

在新安装时,当我单击按钮时,它将跳过所有内容,直到

Toast.makeText(getBaseContext(), "Unable to get Permission", Toast.LENGTH_LONG).show();
它应该请求权限,但出于某种原因,我第一次单击按钮时,它只会给我祝酒词,第二次尝试时,它请求,然后转到可以启用权限的设置。启用权限后,当您再次单击按钮时,它仍会要求启用权限。我检查了手机的设置,手机已启用,但除了第一次点击外,每次点击都会要求启用。我在清单中也有
。我在API>23上我不知道为什么它不承认已授予许可,我也不知道为什么它在第一次单击时不起作用。知道为什么它不起作用吗?谢谢 我遵循了这个教程


}

如果您只想识别您的权限,而不需要在运行时请求权限,我找到了一个临时解决方案。右键单击应用程序文件夹,然后选择“打开模块设置”。转到“口味”选项卡并将“目标Sdk版本”设置为API 22。据我所知,这将授予您安装和运行应用程序的权限。到目前为止,它运行良好,没有缺点。如果有问题,我会更新此文件。

如果您只想识别您的权限,而不需要在运行时请求权限,我已经找到了临时解决方案。右键单击应用程序文件夹,然后选择“打开模块设置”。转到“口味”选项卡并将“目标Sdk版本”设置为API 22。据我所知,这将授予您安装和运行应用程序的权限。到目前为止,它运行良好,没有缺点。我会更新这个,如果我有和问题。
package com.example.brett.brightness;

import android.Manifest;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.IBinder;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SlidingDrawer;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private static SeekBar seekBar;
    private static TextView textView;
    private static final int SYSTEM_ALERT_WINDOW_PERMISSION_CONSTANT = 100;
    private static final int REQUEST_PERMISSION_SETTING = 101;
    private SharedPreferences permissionStatus;
    private boolean sentToSettings = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    permissionStatus = getSharedPreferences("permissionStatus", MODE_PRIVATE);
    setContentView(R.layout.activity_main);
    seekBar = (SeekBar) findViewById(R.id.seekBar);
    textView = (TextView) findViewById(R.id.progressText);
    seekBar.setMax(255);




    Button fab = (Button) findViewById(R.id.button2);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SYSTEM_ALERT_WINDOW) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.SYSTEM_ALERT_WINDOW)) {
                    //Show Information about why you need the permission
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Need Storage Permission");
                    builder.setMessage("This app needs storage permission.");
                    builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW}, SYSTEM_ALERT_WINDOW_PERMISSION_CONSTANT);
                        }
                    });
                    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                    builder.show();
                } else if (permissionStatus.getBoolean(Manifest.permission.SYSTEM_ALERT_WINDOW, false)) {
                    //Previously Permission Request was cancelled with 'Dont Ask Again',
                    // Redirect to Settings after showing Information about why you need the permission
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Need Overlay Permission");
                    builder.setMessage("This app needs overlay permission.");
                    builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                            sentToSettings = true;
                            Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                            Uri uri = Uri.fromParts("package", getPackageName(), null);
                            intent.setData(uri);
                            startActivityForResult(intent, REQUEST_PERMISSION_SETTING);
                            Toast.makeText(getBaseContext(), "Go to Permissions to Grant Overlay", Toast.LENGTH_LONG).show();
                        }
                    });
                    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                    builder.show();
                } else {
                    //just request the permission
                    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW}, SYSTEM_ALERT_WINDOW_PERMISSION_CONSTANT);
                }


                SharedPreferences.Editor editor = permissionStatus.edit();
                editor.putBoolean(Manifest.permission.SYSTEM_ALERT_WINDOW, true);
                editor.commit();


            } else {
                //You already have the permission, just go ahead.
                proceedAfterPermission();
            }
        }
    });


}


private void proceedAfterPermission() {
    //We've got the permission, now we can proceed further
    Toast.makeText(getBaseContext(), "We got the Overlay Permission", Toast.LENGTH_LONG).show();
    //Log.d(TAG, "sending message");
    Intent intent = new Intent(this, DrawOverAppsService.class);
    startService(intent);
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == SYSTEM_ALERT_WINDOW_PERMISSION_CONSTANT) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //The External Storage Write Permission is granted to you... Continue your left job...
            proceedAfterPermission();
        } else {
            if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.SYSTEM_ALERT_WINDOW)) {
                //Show Information about why you need the permission
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("Need Overlay Permission");
                builder.setMessage("This app needs overlay permission");
                builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();


                        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW}, SYSTEM_ALERT_WINDOW_PERMISSION_CONSTANT);


                    }
                });
                builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
                builder.show();
            } else {
                Toast.makeText(getBaseContext(), "Unable to get Permission", Toast.LENGTH_LONG).show();
            }
        }
    }
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_PERMISSION_SETTING) {
        if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.SYSTEM_ALERT_WINDOW) == PackageManager.PERMISSION_GRANTED) {
            //Got Permission
            proceedAfterPermission();
        }
    }
}


@Override
protected void onPostResume() {
    super.onPostResume();
    if (sentToSettings) {
        if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.SYSTEM_ALERT_WINDOW) == PackageManager.PERMISSION_GRANTED) {
            //Got Permission
            proceedAfterPermission();
        }
    }
}