嗨我有一个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
中,也是通过超级回调实现的。
此外,我试图找出使用调试器的情况,但是一旦获取图片意图,调试器就会被解除,并且当权限框出现时它会断开连接。