在 Kotlin 中,我正在构建一个使用相机的应用程序。但是,每当我在模拟器或实际设备上单击相机按钮时,它都会崩溃。我收到以下错误。java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference此错误类型是非特定的,Java(非 kotlin)lang 用户已多次询问过该错误类型。解决方案通常是清单文件中的身份验证与代码函数调用中的用法之间的名称不匹配,但是没有提出的解决方案对我有用。这是我进行“空引用”调用的代码片段:var currentPath: String? = nullval TAKE_PICTURE = 1val SELECT_PICTURE = 2fun dispatchCameraIntent() {val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) if(intent.resolveActivity(packageManager) != null){ var photoFile: File? = null try { photoFile = createImage() }catch (e: IOException){ e.printStackTrace() } if (photoFile != null){ // you must create a content provider matching the authority var photoUri = FileProvider.getUriForFile(this, "com.my_company.my_app.fileprovider", photoFile) intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri) startActivityForResult(intent, TAKE_PICTURE) } }} fun createImage(): File{ val timeStamp = SimpleDateFormat("yyyyMMMM_HHmmss").format(Date())//getDateTimeInstance() val imageName = "JPEG_"+timeStamp+"_" var storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES) var image = File.createTempFile(imageName, ".jpg", storageDir) currentPath = image.absolutePath return image }我的 xml file_paths 文件位于 res>xml>file_paths.xml,如下所示:<?xml version="1.0" encoding="utf-8"?><paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path name="my_pictures" path="SDCARD/Android/data/com.my_company.my_app/files/Pictures"/>
1 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
这是导致问题的代码。它在FileProvider课堂上。
final ProviderInfo info = context.getPackageManager()
.resolveContentProvider(authority, PackageManager.GET_META_DATA);
final XmlResourceParser in = info.loadXmlMetaData(
context.getPackageManager(), META_DATA_FILE_PROVIDER_PATHS);
堆栈跟踪清楚地表明 NPE 正在为loadXmlMetaData调用发生,并且它正在发生是因为info是null。(FileProvider类中该方法只有一个调用点...)
这方面的证据指向的东西是不对的你定义了你的方式FileProvider
。
检查/重新检查文档。
检查清单中的拼写错误或不匹配等。
添加回答
举报
0/150
提交
取消