到目前为止,这是我的代码:
String path = Environment.getExternalStorageDirectory().toString()+"/Pictures";
AssetManager mgr = getAssets();
try {
String list[] = mgr.list(path);
Log.e("FILES", String.valueOf(list.length));
if (list != null)
for (int i=0; i<list.length; ++i)
{
Log.e("FILE:", path +"/"+ list[i]);
}
} catch (IOException e) {
Log.v("List error:", "can't list" + path);
}
Run Code Online (Sandbox Code Playgroud)
然而,虽然我在那个目录中有文件,但它返回list.length = 0 ...任何想法?
Yur*_*ury 301
试试这个:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
Dan*_*ugh 41
我刚刚发现:
new File("/sdcard/").listFiles()
如果您没有,则返回null:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在AndroidManifest.xml文件中设置.
Ree*_*eed 11
好吧,AssetManager列出assetsAPK文件中的文件夹中的文件.所以你在上面的例子中列出的是[apk]/assets/sdcard/Pictures.
如果你把一些图片assets放在你的应用程序里面的文件夹中,并且它们在Pictures目录中,你就可以了mgr.list("/Pictures/").
另一方面,如果你的APK文件之外的文件位于APK文件之外的文件Pictures夹中,那么你可以这样使用File:
File file = new File(Environment.getExternalStorageDirectory(), "Pictures");
File[] pictures = file.listFiles();
...
for (...)
{
log.e("FILE:", pictures[i].getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)
小智 10
除了以上所有答案:
如果您使用的是Android 6.0+(API Level 23+),则必须明确要求获得访问外部存储的权限.只是拥有
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
在你的清单中是不够的.您还积极请求您的活动中的权限:
//check for permission
if(ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED){
//ask for permission
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_PERMISSION_CODE);
}
Run Code Online (Sandbox Code Playgroud)
我建议阅读:http: //developer.android.com/training/permissions/requesting.html#perm-request
| 归档时间: |
|
| 查看次数: |
188778 次 |
| 最近记录: |