Android Studio – 应用在设备上崩溃,但在模拟器上不崩溃 – 可能缺少权限

huangapple go评论89阅读模式
英文:

Android Studio - App crashes on device but not on Emulator - Probably Missing Permission

问题

我目前正在开发一个应用程序,该应用程序读取多个文件夹,并在3个选项卡中以列表视图显示它们。该应用程序在模拟设备上可以正常运行,但在我的普通设备上崩溃。

当我在我的设备上启动应用程序时,我得到以下输出:

09/02 12:05:03: 在 Xiaomi MI 9 Transparent Edition 上启动'app'。
$ adb shell am start -n "com.example.stundenzettel2/com.example.stundenzettel2.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 9449 on device 'xiaomi-mi_9_transparent_edition-331b53a7'。
从应用程序中捕获和显示 logcat 消息。您可以在“调试器”设置页面的“Logcat 输出”部分禁用此行为。
W/System.err: org.xml.sax.SAXParseException: 预期名称(位置:START_TAG <dimen name='config_icon_width'>@7:32 在 java.io.InputStreamReader@f9d92f 中)
在 org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:147) 处解析
在 javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107) 处解析
在 miui.content.res.ThemeValues.parseThemeValues(ThemeValues.java:123) 处解析
在 miui.content.res.ThemeResources$LoadThemeConfigHelper.load(ThemeResources.java:443) 处加载
在 miui.content.res.ThemeZipFile.loadThemeConfigInner(ThemeZipFile.java:272) 处加载
在 miui.content.res.ThemeZipFile.loadThemeConfig(ThemeZipFile.java:254) 处加载
在 miui.content.res.ThemeResources$LoadThemeConfigHelper.newTarget(ThemeResources.java:436) 处创建新目标
在 miui.content.res.ThemeResources.loadThemeValues(ThemeResources.java:455) 处加载
W/System.err: 在 miui.content.res.ThemeResources.checkUpdate(ThemeResources.java:225) 处检查更新
在 miui.content.res.ThemeResourcesSystem.checkUpdate(ThemeResourcesSystem.java:76) 处检查更新
在 miui.content.res.ThemeResources.getSystem(ThemeResources.java:123) 处获取系统
在 android.content.res.MiuiResourcesImpl.updateConfiguration(MiuiResourcesImpl.java:248) 处更新配置
在 android.content.res.Resources.updateConfiguration(Resources.java:1970) 处更新配置
在 android.content.res.Resources.updateSystemConfiguration(Resources.java:1983) 处更新系统配置
在 android.app.ResourcesManager.applyConfigurationToResourcesLocked(ResourcesManager.java:1048) 处将配置应用于资源(被锁定)
在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:6270) 处处理绑定应用程序
在 android.app.ActivityThread.access$1400(ActivityThread.java:220) 处
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1883) 处
在 android.os.Handler.dispatchMessage(Handler.java:107) 处
在 android.os.Looper.loop(Looper.java:224) 处
在 android.app.ActivityThread.main(ActivityThread.java:7520) 处
在 java.lang.reflect.Method.invoke(Native Method) 处
在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 处
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 处
I/Perf: 连接到性能服务。
I/FeatureParser: 在 assets/device_features/ 中找不到 cepheus.xml,它可能位于 /system/etc/device_features 中
W/.stundenzettel2: 类型=1400 的审计(0.0:115384):avc:denied { read } for name="u:object_r:vendor_displayfeature_prop:s0" dev="tmpfs" ino=28839 scontext=u:r:untrusted_app:s0:c175,c257,c512,c768 tcontext=u:object_r:vendor_displayfeature_prop:s0 tclass=file permissive=0
E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
E/Perf: 未能获取文件列表 com.example.stundenzettel2
    getFolderSize():Exception_1 = java.lang.NullPointerException:尝试获取 null 数组的长度
E/Perf: 未能获取文件列表 com.example.stundenzettel2
    getFolderSize():Exception_1 = java.lang.NullPointerException:尝试获取 null 数组的长度
W/.stundenzettel: 访问隐藏方法 Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z(灰名单、反射、允许)
W/.stundenzettel: 访问隐藏方法 Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V(灰名单、反射、允许)
I/System.out: /storage/emulated/0
W/System.err: java.io.IOException: 拒绝权限
        在 java.io.UnixFileSystem.createFileExclusively0(Native Method)
        在 java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
        在 java.io.File.createNewFile(File.java:1008)
        在 com.example.stundenzettel2.tab1.<init>(tab1.java:165)
        在 com.example.stundenzettel2.PageAdapter.getItem(PageAdapter.java:25)
        在 androidx.fragment.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:170)
W/System.err: 在 androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
        在 androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1158)
        在 androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
        在 androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
        在 android.view.View.measure(View.java:24603)
        在 androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
        在 androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
        在 android.view.View.measure(View.java:24603)
        在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
        在 android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        在 androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
        在 android.view.View.measure(View.java:24603)
        在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
        在 android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
        在 android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
        在 android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
        在 android.view.View.measure(View.java:24603)
        在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
        在 android.widget.FrameLayout.onMeasure(Frame

<details>
<summary>英文:</summary>

Im currently working on an App that reads multiple folders and displays them in 3 Tabs with a listview. The app works without a problem on the Emulated Device but crashes on my normal Device.

This is the output I get when I launch the app on my device.

09/02 12:05:03: Launching 'app' on Xiaomi MI 9 Transparent Edition.
$ adb shell am start -n "com.example.stundenzettel2/com.example.stundenzettel2.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 9449 on device 'xiaomi-mi_9_transparent_edition-331b53a7'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/System.err: org.xml.sax.SAXParseException: name expected (position:START_TAG <dimen name='config_icon_width'>@7:32 in java.io.InputStreamReader@f9d92f)
at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:147)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
at miui.content.res.ThemeValues.parseThemeValues(ThemeValues.java:123)
at miui.content.res.ThemeResources$LoadThemeConfigHelper.load(ThemeResources.java:443)
at miui.content.res.ThemeZipFile.loadThemeConfigInner(ThemeZipFile.java:272)
at miui.content.res.ThemeZipFile.loadThemeConfig(ThemeZipFile.java:254)
at miui.content.res.ThemeResources$LoadThemeConfigHelper.newTarget(ThemeResources.java:436)
at miui.content.res.ThemeResources.loadThemeValues(ThemeResources.java:455)
W/System.err: at miui.content.res.ThemeResources.checkUpdate(ThemeResources.java:225)
at miui.content.res.ThemeResourcesSystem.checkUpdate(ThemeResourcesSystem.java:76)
at miui.content.res.ThemeResources.getSystem(ThemeResources.java:123)
at android.content.res.MiuiResourcesImpl.updateConfiguration(MiuiResourcesImpl.java:248)
at android.content.res.Resources.updateConfiguration(Resources.java:1970)
at android.content.res.Resources.updateSystemConfiguration(Resources.java:1983)
at android.app.ResourcesManager.applyConfigurationToResourcesLocked(ResourcesManager.java:1048)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6270)
at android.app.ActivityThread.access$1400(ActivityThread.java:220)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1883)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7520)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
I/Perf: Connecting to perf service.
I/FeatureParser: can't find cepheus.xml in assets/device_features/,it may be in /system/etc/device_features
W/.stundenzettel2: type=1400 audit(0.0:115384): avc: denied { read } for name="u:object_r:vendor_displayfeature_prop:s0" dev="tmpfs" ino=28839 scontext=u:r:untrusted_app:s0:c175,c257,c512,c768 tcontext=u:object_r:vendor_displayfeature_prop:s0 tclass=file permissive=0
E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
E/Perf: Fail to get file list com.example.stundenzettel2
getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array
E/Perf: Fail to get file list com.example.stundenzettel2
getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array
W/.stundenzettel: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
W/.stundenzettel: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
I/System.out: /storage/emulated/0
W/System.err: java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
at java.io.File.createNewFile(File.java:1008)
at com.example.stundenzettel2.tab1.<init>(tab1.java:165)
at com.example.stundenzettel2.PageAdapter.getItem(PageAdapter.java:25)
at androidx.fragment.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:170)
W/System.err: at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1158)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:24603)
at androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:766)
at android.view.View.measure(View.java:24603)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3072)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1896)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2188)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1784)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7787)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1031)
at android.view.Choreographer.doCallbacks(Choreographer.java:854)
at android.view.Choreographer.doFrame(Choreographer.java:789)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1016)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7520)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
W/System.err: java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
at java.io.File.createNewFile(File.java:1008)
at com.example.stundenzettel2.tab2.<init>(tab2.java:44)
at com.example.stundenzettel2.PageAdapter.getItem(PageAdapter.java:31)
at androidx.fragment.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:170)
at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1158)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:24603)
at androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:766)
at android.view.View.measure(View.java:24603)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3072)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1896)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2188)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1784)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7787)
W/System.err: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1031)
at android.view.Choreographer.doCallbacks(Choreographer.java:854)
at android.view.Choreographer.doFrame(Choreographer.java:789)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1016)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7520)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
W/System.err: java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
at java.io.File.createNewFile(File.java:1008)
at com.example.stundenzettel2.tab3.<init>(tab3.java:44)
at com.example.stundenzettel2.PageAdapter.getItem(PageAdapter.java:37)
at androidx.fragment.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:170)
at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1158)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:24603)
at androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
W/System.err: at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:766)
at android.view.View.measure(View.java:24603)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3072)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1896)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2188)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1784)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7787)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1031)
at android.view.Choreographer.doCallbacks(Choreographer.java:854)
at android.view.Choreographer.doFrame(Choreographer.java:789)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1016)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7520)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.stundenzettel2, PID: 9449
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at androidx.fragment.app.FragmentTransaction.doAddOp(FragmentTransaction.java:161)
at androidx.fragment.app.BackStackRecord.doAddOp(BackStackRecord.java:179)
at androidx.fragment.app.FragmentTransaction.add(FragmentTransaction.java:156)
at androidx.fragment.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:172)
at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1158)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:24603)
at androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:24603)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6885)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:766)
at android.view.View.measure(View.java:24603)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3072)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1896)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2188)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1784)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7787)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1031)
at android.view.Choreographer.doCallbacks(Choreographer.java:854)
at android.view.Choreographer.doFrame(Choreographer.java:789)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1016)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7520)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)


I think I`m getting a NullPointerException because the App cant read the files inside my device.
This is propably the Problem. Im trying to get the files from the folder and create a file in the folder so that it cant be empty.

public tab1() throws IOException {

    final File path = Environment.getExternalStorageDirectory();

    System.out.println(path);

    File f = new File(path + &quot;/My Files/Angefangen&quot;);

    File b = new File(path + &quot;/My Files/Angefangen/bruh.txt&quot;);
    b.getParentFile().mkdirs();
    b.createNewFile();

    accepted = new ArrayList&lt;String&gt;(Arrays.asList(f.list()));
}

[Codeblock as Image][1]


  [1]: https://i.stack.imgur.com/pB5HZ.png

My Manifest has the Permission Lines added and im asking for permission in my MainActivity i dont know if thats enough.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


int PERMISSION_ALL = 1;
String[] PERMISSIONS = {
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
};

public static boolean hasPermissions(Context context, String... permissions) {
    if (context != null &amp;&amp; permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

and 

if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}


Thanks in advance for any help.

EDIT: Fixed it by adding this to the Manifest for Devices above API 29.

<manifest ... >

<application android:requestLegacyExternalStorage="true" ... >
...
</application></manifest>


</details>


# 答案1
**得分**: 2

已通过将以下内容添加到API版本为29及以上的设备清单中进行修复:

```xml
<manifest ... >
<application android:requestLegacyExternalStorage="true" ... >
...
</application></manifest>
英文:

Was fixed by adding this to the Manifest for Devices with an API of 29 and above.

&lt;manifest ... &gt;  
&lt;application android:requestLegacyExternalStorage=&quot;true&quot; ... &gt;
...
&lt;/application&gt;&lt;/manifest&gt;

huangapple
  • 本文由 发表于 2020年9月2日 18:16:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/63703440.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定