Java 应用程序可以在模拟器上运行,但不能在真实设备上运行

Java 应用程序可以在模拟器上运行,但不能在真实设备上运行,java,android,Java,Android,我有一个音乐播放器应用程序,我正在开发它只是为了学习,我想在我的手机上测试它。如果我在emulator上运行应用程序,它会像一个魔咒一样工作,但是如果我使用我的真实手机进行调试,那么它将停止在这一部分: loadFiles(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"); public void loadFiles(String path) { Log.d(TAG, "l

我有一个音乐播放器应用程序,我正在开发它只是为了学习,我想在我的手机上测试它。如果我在emulator上运行应用程序,它会像一个魔咒一样工作,但是如果我使用我的真实手机进行调试,那么它将停止在这一部分:

loadFiles(Environment.getExternalStorageDirectory().getAbsolutePath() + "/");

public void loadFiles(String path) {
    Log.d(TAG, "loadFiles");
    File f = new File(path);
    File[] files = f.listFiles();

    if (files != null) {
         ... //Wont run
    }
}
因此,我在if之前添加了另一个
Log.d
,以查看出了什么问题,结果是
文件
为空。没有错误,并且在模拟器中工作

应用程序用API 21编写,手机是小米红米Note 7 Pro,安卓10,我有USB调试功能

运行后日志(错误,完整日志):


尝试在您的
build.gradle
中使用
multidexEnabled

defaultConfig {
     multiDexEnabled true
}
清洁、建造和运行

如果不起作用,请尝试启用USB调试模式。手册


您可能缺少一些SDK,但这不太可能。

尝试在
构建中使用
多索引启用的
。gradle

defaultConfig {
     multiDexEnabled true
}
清洁、建造和运行

如果不起作用,请尝试启用USB调试模式。手册

您可能缺少一些SDK,但这不太可能。

发现了问题

从安卓10开始,你必须写作

android:requestLegacyExternalStorage="true"
在清单文件中找到问题

从安卓10开始,你必须写作

android:requestLegacyExternalStorage="true"

在清单文件中,是否有相同的内容?能否向我们显示您从应用程序中获得的日志?我在第二次运行后添加了日志,因为第一次运行总是会引发大量错误,但我认为这并不重要基于您的日志,这与您的手机权限有关,您是否在手机上启用了usb调试?是否也启用了usb调试?能否向我们显示您从应用程序中获取的日志?我在第二次运行后添加了日志,因为第一次运行时总是会抛出大量错误,但我认为这不重要基于您的日志,这与您的手机权限有关,您是否已在手机上启用usb调试?