Android Studio - 从Windows资源管理器和android文件管理器访问/ storage / emulated / 0

时间:2017-08-09 09:04:37

标签: android file storage explorer android-external-storage

我是android开发的新手。 我相信很多人都有同样的问题。我没有SD卡的 Galaxy S7手机。所以没有外部存储。但我想用我的应用程序创建文件,必须从Windows资源管理器访问才能导出它。

注意:USB模式下的debbug - 无虚拟设备

当然,在我的清单文件中,我设置了这两个权限:

android.permission.WRITE_INTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

为了确保我创建了一个文件,我使用了这种写法和以下读取方法:

    File root = this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
    File customFolder = new File(root.getAbsolutePath() + "/CustomFolder");
    customFolder.mkdirs();
    file = new File(customFolder, "myData.txt");

    // Must catch FileNotFoundException and IOException
    try {
        FileOutputStream f = new FileOutputStream(file);
        PrintWriter pw = new PrintWriter(f);
        pw.println("Howdy do to you,");
        pw.println("and the horse you rode in on.");
        pw.flush();
        pw.close();
        f.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Log.i(TAG, "File not found");
    } catch (IOException e) {
        e.printStackTrace();
        Log.i(TAG, "I/O exception");
    }

阅读myData.txt

try {
BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while (true) {
            line= br.readLine();
            if (line== null) break;
            tv.append("\n" + "    " + line);
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

所以所有方法都可以,但是当我浏览我的文件系统来获取创建的文件myData.txt时,我找不到它!

我们安装的大多数应用在根目录上都有自己的文件夹,如Snapchat,Whatsapp等等

我想做同样的事情,写文件的方式是什么:

ROOT - > MyApplicationName - > CustomFolder

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我终于找到了添加MediaScannerConnection.scanFile()方法的解决方案。

   public <E extends RealmModel> boolean isDataExist(Class<E> eClass, int id) {
    E data = colleagueRealm.where(eClass).equalTo("id", id).findFirst();
    return data != null;
}

private void initData(){
 if(isDataExist(MyColleagueModel.class, id.getText().toString())){
  // data exist
 }else{
  // insert new
 }

但是这个解决方案并不适合我,因为存储文件夹是:

Android / data / donain_name / files / Documents / CustomFolder

我希望得到与whatsapp应用程序相同的结果,该应用程序可以在内部存储根目录中有一个文件夹。

我想要的结果是: 的所有MyApplication / CustomeFolder