java.lang.NullPointerException:尝试在Android 10上调用虚拟方法'java.lang.String java.io.File.getName'

问题描述

我正在从用户那里获取图像以进行上传。 我使用的方法在Android 9(Pie)之前都可以正常工作。 但是我在Android 10上进行了测试,它为我提供了Null Pointer。 我正在获取文件名,我认为它与新的权限策略有关,但是我无法解析。

这是完整的错误

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,request=65536,result=-1,data=Intent 
    
    {dat=content://com.google.android.apps.photos.contentprovider/-1/1/content://media/external/images/media/

253155/ORIGINAL/NONE/image/jpeg/1274443360 flg=0x1 clip={text/uri-list 
    
    U:content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages

%2Fmedia%2F253155/ORIGINAL/NONE/image%2Fjpeg/1274443360} }}

to activity {com.buraqsysstudio.welist/com.buraqsysstudio.welist.Activities.MainActivity}: 
    
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String 

java.io.File.getName()' on a null object reference

这是我打开选择器意图的方式:

Permissions.check(getActivity(),Manifest.permission.READ_EXTERNAL_STORAGE,null,new PermissionHandler() {
            @Override
            public void onGranted() {
                Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT);
                getIntent.setType("image/*");
                Intent pickIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                pickIntent.setDataAndType(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
                Intent chooserIntent = Intent.createChooser(getIntent,"Select Image");
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Intent[]{pickIntent});
                PICK_IMAGE = 1;
                startActivityForResult(chooserIntent,PICK_IMAGE);
            }
        });

这是发送图片代码

Uri fullPhotoUri = data.getData();
                    user_profile_image.setimageURI(fullPhotoUri);
                    file = new File(FileUtils.getPath(fullPhotoUri,getActivity()));
                    Log.d("filedata","=>" + file);
                    File finalAvatar = ViewUtils.saveBitmapToFile(file);
                    userAvatar = MultipartBody.Part.createFormData
                            ("avatar",finalAvatar.getName(),RequestBody.create(MediaType.parse("image/*"),finalAvatar));

有人帮助我解决这个问题吗?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)