我正在尝试将拍照功能添加到我的应用程序中,这应该相当简单,但是我在Android 10上遇到了问题。
我按照https://developer.android.com/training/camera/photobasics中的实现细节进行操作(目前我只实现了基本功能,即启动相机应用程序并返回缩略图的位图)。
这在旧版模拟设备上都有效,但是当我在我的Google Pixel物理设备和模拟的Pixel 2上进行测试(两者均运行Android 10),在调用startActivity后会崩溃:
btnCam.setOnClickListener(v -> {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
});
问题在于,崩溃的不是我的应用程序,而是相机应用程序。如果我在崩溃后查看logcat,则会收到以下消息:
2020-02-02 17:11:29.059 15592-15592/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.android.GoogleCamera, PID: 15592
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.GoogleCamera/com.google.android.apps.camera.legacy.app.activity.CaptureActivity}: java.lang.NullPointerException: Attempt to get length of null array
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at com.google.android.apps.camera.legacy.app.activity.CaptureActivity.onCreate(PG:12)
at android.app.Activity.performCreate(Activity.java:7802)
at android.app.Activity.performCreate(Activity.java:7791)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
根据错误提示java.lang.NullPointerException: Attempt to get length of null array
,我认为代码期望得到某种输入,但我未提供。然而,我并没有找到需要提供任何额外参数的说明(我知道你可以指定可选参数来指定将结果照片写入的位置,但没有任何说明这是必需的)。
是否有人了解如何在安卓10上解决此问题?
谢谢