0

This was working until I switched the target version to 29. I've been searching and found How to List all Internal Storage Folders in Android Q (API Level 29)? however I'm not following and am still confused. Please help! :)

    private static List<File> getListFiles2(File parentDir) {

    List<File> inFiles = new ArrayList<>();
    Queue<File> files = new LinkedList<>();
    Log.d("parent", String.valueOf(parentDir));
    files.addAll(Arrays.asList(parentDir.listFiles()));

Error:

2020-09-25 15:48:13.714 21546-21546/com.subreaderFree D/parent: /storage/emulated/0/Download
2020-09-25 15:48:13.714 21546-21546/com.subreaderFree D/AndroidRuntime: Shutting down VM
2020-09-25 15:48:13.724 21546-21546/com.subreaderFree E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.subreaderFree, PID: 21546
java.lang.NullPointerException
    at java.util.Objects.requireNonNull(Objects.java:203)
    at java.util.Arrays$ArrayList.<init>(Arrays.java:3738)
    at java.util.Arrays.asList(Arrays.java:3725)
    **at com.shivito.subreader.MainActivity.getListFiles3(MainActivity.java:462)
    at com.shivito.subreader.MainActivity.onOptionsItemSelected(MainActivity.java:965)**
    at android.app.Activity.onMenuItemSelected(Activity.java:4182)
    at androidx.fragment.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:384)
    at androidx.appcompat.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:219)
    at 
androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
    at 
androidx.appcompat.app.AppCompatDelegateImpl.onMenuItemSelected(AppCompatDelegateImpl.java:1001)
    at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840)
    at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
    at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991)
    at androidx.appcompat.view.menu.MenuPopup.onItemClick(MenuPopup.java:128)
    at android.widget.AdapterView.performItemClick(AdapterView.java:374)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1736)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:4207)
    at android.widget.AbsListView$7.run(AbsListView.java:6692)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:8125)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

1 Answers1

0

Suraj Bahadur linked to the page that solved this for me. I just needed to add 'android:requestLegacyExternalStorage="true"' to my manifest.

?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.appname"
    android:installLocation="auto">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">

        <activity android:name=".activities.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


    </application>

</manifest>