小编Ed *_*ner的帖子

Android 11 - 访问我的应用程序 Android/Data 文件夹中的文件

由于某种原因,我真的很挣扎,希望有人能帮助我指明正确的方向。

我的目标是 Android 11 / API 30,这似乎是所有问题的根源。降低目标可能对我有用——但谷歌似乎最终会迫使我走上这条路,所以我不妨弄清楚这一点。

我的应用程序通常会按照标准写入文件

getExternalFilesDir(null)
Run Code Online (Sandbox Code Playgroud)

这给了我设备上的一条路径

/storage/emulated/0/Android/data/com.domain.testapp/files
Run Code Online (Sandbox Code Playgroud)

我还尝试了其他类型,例如:

getExternalFilesDir(Environment.DIRECTORY_PICTURES)
Run Code Online (Sandbox Code Playgroud)

结果是

/storage/emulated/0/Android/data/com.domain.testapp/files/Documents
Run Code Online (Sandbox Code Playgroud)

我的应用程序实际上将文件写入此位置没有任何问题。在 Android 11 中,我必须使用本地文件浏览器跳过一些麻烦才能查看这些文件 - 但它们确实存在于设备上。

我现在试图为用户提供一些查看文件和共享文件的能力,这就是我所困惑的地方!

下面的代码导致找不到文件

File filePath = this.getExternalFilesDir(null);
String filePathString = filePath.toString();

ArrayList<String> myData = new ArrayList<>();
File fileDir = new File(filePathString);

String[] files = fileDir.list();

if(files.length == 0){
    Log.w(APPID, "NO FILES IN FOLDER");
}
Run Code Online (Sandbox Code Playgroud)

是的 - 我知道不需要 File 和 .toString() - 但我每一步都将它们注销,因为我认为我疯了。

我知道这个应用程序指向的文件夹中有十几个左右的文件。该应用程序创建了文件。不是应该能看到文件夹里的文件吗???

Manifest 具有以下权限 - 我认为它不需要全部:

<uses-permission android:name = "android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

没有权限显示为应用程序被拒绝

我想过使用外部存储 - 但似乎这在 Android …

android file android-external-storage android-11

7
推荐指数
1
解决办法
3万
查看次数

Android 工具栏崩溃问题 - 并非所有设备

我遇到了一个奇怪的问题。我有一个应用程序在一堆设备上运行,但在其中一个设备上失败了,出现了一些看似简单但我无法弄清楚的问题。

\n

工具栏在我的所有设备上工作正常 - 但导致此错误:

\n
\n

不要在主题中请求 Window.FEATURE_SUPPORT_ACTION_BAR 并将 windowActionBar 设置为 false 以使用工具栏。

\n
\n

活动_main.xml:

\n
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"\nxmlns:app="http://schemas.android.com/apk/res-auto"\nxmlns:tools="http://schemas.android.com/tools"\nandroid:layout_width="match_parent"\nandroid:layout_height="match_parent"\ntools:context=".MainActivity">\n\n<com.google.android.material.appbar.AppBarLayout\n    android:id="@+id/appBarLayout"\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    android:theme="@style/AppTheme.AppBarOverlay"\n    app:layout_constraintEnd_toEndOf="parent"\n    app:layout_constraintStart_toStartOf="parent"\n    app:layout_constraintTop_toTopOf="parent">\n\n    <androidx.appcompat.widget.Toolbar\n        android:id="@+id/toolbar"\n        android:layout_width="match_parent"\n        android:layout_height="?attr/actionBarSize"\n        android:background="@color/header_color"\n        app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" />\n\n</com.google.android.material.appbar.AppBarLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

主题.xml:

\n
<resources xmlns:tools="http://schemas.android.com/tools">\n<!-- Base application theme. -->\n<style name="Theme.TestApp" parent="Theme.MaterialComponents.DayNight.Bridge">\n    <!-- Primary brand color. -->\n    <item name="colorPrimary">@color/purple_500</item>\n    <item name="colorPrimaryVariant">@color/purple_700</item>\n    <item name="colorOnPrimary">@color/white</item>\n    <!-- Secondary brand color. -->\n    <item name="colorSecondary">@color/teal_200</item>\n    <item name="colorSecondaryVariant">@color/teal_700</item>\n    <item name="colorOnSecondary">@color/black</item>\n    <!-- Status bar color. -->\n    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>\n    <!-- Customize your theme here. …
Run Code Online (Sandbox Code Playgroud)

java android toolbar

1
推荐指数
1
解决办法
583
查看次数