gpt4 book ai didi

android - 启动 Intent 时相机在 Android 10 上崩溃

转载 作者:行者123 更新时间:2023-12-04 04:18:22 30 4
gpt4 key购买 nike

我正在尝试将拍照功能添加到我的应用程序中,这应该相当简单,但是由于某种原因我在 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 而崩溃 我想它期待某种形式的输入,但我没有提供但是我没有找到任何提及必须提供任何额外参数(我知道您可以指定可选参数来指定将结果照片写入的位置,但没有人说这是必需的)

有人知道这个问题以及如何在 Android 10 上解决它吗?

谢谢

最佳答案

根据 another post ,这是最近已更正的相机应用程序中的错误。当您使用相机应用拍照时,您的应用无需请求使用相机的权限。

但是如果您需要您的应用程序在推出错误修复之前在 API 29 模拟器或设备上运行,您可以只添加 <uses-permission>对于您的 AndroidManifest.xml 的任何类型的权限(甚至是假权限):

<manifest ...>
<uses-permission android:name="BLAH" />
...

</manifest>

关于android - 启动 Intent 时相机在 Android 10 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60023777/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com