好奇心杀死了我。在用Xamarin和C#制作的Android测试应用程序中,我想列出路径“/storage/emulated/0/Android”中的所有文件和目录。我已经给了权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
字符串
但我还是被拒绝了。与此同时,像X-plore这样的应用程序可以毫无问题地做到这一点,即使它们具有相同的读写权限。
这里是代码。
private void ListDaFiles(string rootDirectory)
{
var paths = new List<string>();
List<string> fileList = new List<string>();
RecursivelyListFilesAndDirectories(rootDirectory, fileList);
foreach (string path in fileList)
{
paths.Add(path);
}
}
private void RecursivelyListFilesAndDirectories(string directoryPath, List<string> fileList)
{
try
{
string[] files = System.IO.Directory.GetFiles(directoryPath);
string[] directories = System.IO.Directory.GetDirectories(directoryPath);
fileList.AddRange(files);
foreach (string dir in directories)
{
fileList.Add(dir);
RecursivelyListFilesAndDirectories(dir, fileList);
}
}
catch (Exception ex)
{
string err = ex.Message;
}
}
型
2条答案
按热度按时间noj0wjuj1#
我找到了解决办法!在AndroidManifest.xml文件中,我添加了以下内容:android:requestLegacyExternalStorage=“true”inside虽然我之前已经做过了,但这次我做的不同之处在于删除权限并卸载应用程序。然后,我从头开始重新运行一切。它创造了奇迹!
j8ag8udp2#
。尽管他们有相同的读写权限
他们可能还要求用户访问所有文件。
有关在较新的Android版本上访问文件的其他信息,请参阅community wiki answer about Android file access。