googlesamples / easypermissions

Simplify Android M system permissions
https://firebaseopensource.com/projects/googlesamples/easypermissions/
Apache License 2.0
9.86k stars 1.46k forks source link

EasyPermissions.hasPermissions return true anytime,no false?why? #273

Closed bozomoyy closed 5 years ago

bozomoyy commented 5 years ago

Android stutio version:3.3.1 SDK level:28 Android API level:23(6.0) I use EasyPermissions to dynamic request permissions,Then the problem arises. When i try to request canmera permission,i found that EasyPermissions.hasPermissions this number of code return true anytime,the mobile even not ask me.And below is my code:

public class TestActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks{

    public final static String TAG = TestActivity.class.getSimpleName();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        TextView t = findViewById(R.id.textView_top_title);
        t.setText("Test how to use EasyPermissions");
        findViewById(R.id.button_login).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                requestPermissions();
            }
        });

    }
    private static final int RC_CAMERA_AND_RECORD_AUDIO = 10000;

    private void requestPermissions() {
        String[] perms = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION};

        if (EasyPermissions.hasPermissions(this, perms)) {
            // You and do anything
            openCamera();
        } else {
            // No permissions
            // this: context
            // Dialog : Show infomation
            // RC_CAMERA_AND_RECORD_AUDIO 
            // perms 
            EasyPermissions.requestPermissions(this, "You need to allow us use your permissions", RC_CAMERA_AND_RECORD_AUDIO, perms);
        }
    }

    private void openCamera(){
        Toast.makeText(this, "OpenCamera successful!", Toast.LENGTH_SHORT)
                .show();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
            // Do something after user returned from app settings screen, like showing a Toast.
            Toast.makeText(this, "result", Toast.LENGTH_SHORT)
                    .show();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        // Forward results to EasyPermissions
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }

    @Override
    public void onPermissionsGranted(int requestCode, List<String> list) {
        // Some permissions have been granted
        Log.d(TAG, "onPermissionsGranted:" + requestCode + ":" + list.size());
    }

    @Override
    public void onPermissionsDenied(int requestCode, List<String> list) {
        Log.d(TAG, "onPermissionsDenied:" + requestCode + ":" + list.size());

        // (Optional) Check whether the user denied any permissions and checked "NEVER ASK AGAIN."
        // This will display a dialog directing them to enable the permission in app settings.
        if (EasyPermissions.somePermissionPermanentlyDenied(this, list)) {
            new AppSettingsDialog.Builder(this).build().show();
        }
    }
}
samtstern commented 5 years ago

@bozomoyy a few questions:

samtstern commented 5 years ago

@bozomoyy since it's been ~6 weeks since the questions I asked and there is no answer, I assume this issue is solved. Let me know if it's not!