【问题标题】:onRequestPermissionsResult could not be called on v4.app.Fragment无法在 v4.app.Fragment 上调用 onRequestPermissionsResult
【发布时间】:2018-10-30 08:51:37
【问题描述】:
public void onClick(View v) {
    if(v.getId() == R.id.btnSave) {
        if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    REQUEST_PERMISSION_STORAGE);
        } else {
            //do something
        }

}

public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                       int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == REQUEST_PERMISSION_STORAGE
            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

    }

}

我尝试使用构建变体调试此代码,调用函数 onRequestPermissionsResult 但是随着构建变体发布,这个函数 onRequestPermissionsResult 不会被调用

【问题讨论】:

  • 如果您已覆盖此方法,请确保您在活动中调用super.onRequestPermissionsResult(requestCode, permissions, grantResults);。如果还是不行,试试我的库:github.com/nabinbhandari/Android-Permissions
  • 我已经调用了 super.onRequestPermissionsResult(requestCode, permissions, grantResults);在活动中,但 onRequestPermissionsResult 也不能​​调用

标签: android fragment android-permissions


【解决方案1】:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setLocationSendListener(this);
    takeRunTimePermission();

}

public void takeRunTimePermission() {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
            1);
}

@覆盖 公共无效 onRequestPermissionsResult(int requestCode, 字符串权限[], int[] grantResults) { 开关(请求代码){ 案例 1:{

            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted, yay! Do the
            } else {

                // permission denied, boo! Disable the
                Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
            }
            return;
        }

        // permissions this app might request
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多