在 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? = null
val TAKE_PICTURE = 1
val SELECT_PICTURE = 2
fun 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"/>
ibeautiful
相关分类