2017-02-28 77 views
-1

我有一个应用程序需要访问android手机的内部存储,如下载文件夹。但是,当我尝试列出文件它alimport在“/ sdcard /”中列出文件返回null?

java.io.File; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class Main extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     File root = new File("/"); // Works 
     File mnt = new File("/mnt/"); // Works 
     File mnt2 = new File("/mnt/m_internal_storage"); // Crashes 
     File cus = new File("/custom/"); // Works 
     File f = new File("/sdcard/"); // Crashes 
     String[] s = f.list(); 
     for (int x = 0; x < s.length; x++) { 
      Log.println(Log.ASSERT, "#", s[x]); 
     } 
    } 
} 

此代码将打印目录中的每个文件。它的工作原理与rootmnt & cus但是,当它试图获得的f & mnt2列表,返回null阵列s崩溃。我如何访问内部文件存储?

我也尝试使用Environment的功能,大部分失败,我甚至有读/写权限启用外部存储。

编译为7.0。 定位API 23 敏SDK API 18

回答

1

我有需要访问Android手机的内部存储空间,如下载文件夹的应用程序。

用户看到的Download文件夹位于Android SDK所调用的文件夹external storage

如何访问内部文件存储?

使用Environment.getExternalStorageDirectory()千万不要硬编码路径。例如,地球表面上的极少数设备具有/mnt/m_internal_storage/custom//sdacard/

我也试过使用环境的功能与大多数失败,我甚至有启用外部存储的读/写权限。

也许你没有执行runtime permissions

+1

我使用一个文件浏览,看节目之外的我的电话的文件。我的手机有一个内部下载文件夹和外部文件夹。就像我说'环境'不起作用,我正在使用硬编码来告诉extact目录。第三,你需要运行时权限到R/W内部存储? –

+1

https://developer.android.com/training/basics/data-storage/files.html#WriteInternalStorage没有说明需要内部存储权限。 –

+1

另外'/ sdacard /'是一个错字。 –

1

在你的代码中是“File f = new File(”/ sdacard /“); // Crashes”,它应该是“/ sdcard /”。

+0

这只是写这个问题的一个错字,它仍然没有改变。 –

1

如果你希望你的应用程序的内部文件,指app.package

/sdcard/data/data/pack_name/files/fileName 

你需要访问它像这样

File p = getApplicationContext().getFileStreamPath("FileName"); 

编辑 除此之外,你要问的运行时间权限 和下载路径不是内部存储!它定义为外部。 正常用户可以在文件管理器中访问(无根)的所有内容都是外部存储。内部存储不像内部SD卡,然后是微型SD卡。内部存储就是属于乌尔包 阅读: https://developer.android.com/guide/topics/permissions/requesting.html

+1

这不是我想要的,我想要Chrome应用下载文件的内部下载文件夹。 –

+1

检查已编辑的答案并要求获得许可 –