在第一次请求权限时未能获得片段图片?

时间:2016-09-06 15:48:21

标签: android permissions android-camera onactivityresult

嗨我有一个param2里面有MainActivity,我获得MyFragment的运行时权限,一旦我获得了MyFragmnet的权限,我正在打电话到onRequestPermissionsResult,当我第一次请求权限时,它无法显示图片,但是当我第二次运行拍照代码时,它已经获得了许可(首次授予的权限),这里我得到了正确的图像

我已在每个地方启用了日志,例如MyFragment.this.startActivityForResult(takePictureIntent, profileimageRequest); onActivityResult()以及MainActivity,流量保持不变,但结果会有所不同,当事先获得许可时,它会成功显示图片,但是第一次允许即使在授予后也无法显示拍摄的照片。

MyFragmnet

以下是权限结果回调的代码

    button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
MyFragment.this.requestPermissions(new String[]{android.Manifest.permission.CAMERA},
                                    MainActivity.PROFILEIMAGE_REQUEST);
                    }
                });

设置图片的代码:

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        Log.e(getTag(),"onRequestPermissionsResult");
        System.out.println();
        switch (requestCode) {
            case MainActivity.PROFILEIMAGE_REQUEST: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Log.e(getTag(),"Inside if------onRequestPermissionsResult");
                    System.out.println();
                    if (takePictureIntent.resolveActivity(mainActivity.getPackageManager()) != null) {
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    MyFragment.this.startActivityForResult(takePictureIntent, profileimageRequest);
}
                }
                }
            }
........
        }
    }

以上所有代码都在@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.e(getTag(),"onActivityResult "+requestCode); // super.onActivityResult(requestCode,requestCode,data); if (requestCode == MainActivity.PROFILEIMAGE_REQUEST) { if (resultCode == Activity.RESULT_OK) { Log.e(getTag(),"ok "); handleProfileImage(); } } 的片段onActivityResult中,也是通过超级回调实现的。

此外,我试图找出使用调试器的情况,但是一旦获取图片意图,调试器就会被解除,并且当权限框出现时它会断开连接。

0 个答案:

没有答案