Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于android文件管理环境、android概念和android库插件_Java_Android_Gradle_Javafx_Gluon Mobile - Fatal编程技术网

Java 关于android文件管理环境、android概念和android库插件

Java 关于android文件管理环境、android概念和android库插件,java,android,gradle,javafx,gluon-mobile,Java,Android,Gradle,Javafx,Gluon Mobile,要在Eclipse下使用Java在Android中创建文件,我必须使用: File docsFolder = new File(Environment.getExternalStorageDirectory() + "/toto.txt"); 所以,我必须导入android.os.Environment 案例1: 在Eclipse项目-Gradle-Refresh All之后,我得到以下错误: error: package android.os does not exist import an

要在Eclipse下使用Java在Android中创建文件,我必须使用:

File docsFolder = new File(Environment.getExternalStorageDirectory() + "/toto.txt");
所以,我必须导入android.os.Environment

案例1: 在Eclipse项目-Gradle-Refresh All之后,我得到以下错误:

error: package android.os does not exist
import android.os.Environment;
                 ^
C:\Users\pascal\workspaceNeon\JFX_withGluon_10.8n\src\main\java\com\gluonapplication\PopUp.java:2694: error: cannot find symbol
        GluonApplication.traceSimple("Path: " + Environment.getExternalStorageDirectory());
                                                ^
  symbol:   variable Environment
案例2:

结果:我在build.gradle文件中添加了应用插件:“android库”,见下文

在本例中,在Gradle Refresh all上,我得到:

"FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'JFX_withGluon_10.8n'.
> **android.compileSdkVersion is missing!**"
我的build.gradle文件似乎很好。我刚才补充说: 应用插件:“android库”

Java构建路径库包括android-25.jar

src/android/res/AndroidManifest.xml:

 "<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="25"/>

为了避免所有这些复杂问题,我认为您应该尝试使用Android Studio。

在downConfig块下的构建文件中包括几个“插件”。这些插件提供了一个不可知的API,这意味着您将它们添加到主Java包中,并且有一个隐藏的特定于平台的实现,一旦您将应用程序部署到任何可能的平台桌面、android或iOS上,就会使用它

如果你想访问一个给定的文件夹,你有一个存储插件

检查API

您可以在应用程序中获得捆绑的私人文件夹或公用文件夹

对于与你的应用程序相关的数据,我将使用私人文件夹:

File localRoot = Services.get(StorageService.class)
            .flatMap(s -> s.getPrivateStorage())
            .orElseThrow(() -> new RuntimeException("Error retrieving private storage")); 
现在您可以在那里创建文件:

File docsFolder = new File(localRoot + "/toto.txt");
File docsFolder = new File(publicRoot + "/toto.txt");
对于公共媒体,首先需要检查它是否可用,媒体是否已装载,以及您是否具有写入权限:

boolean storageAvailable = Services.get(StorageService.class)
        .map(service -> service.isExternalStorageWritable())
        .orElse(false);
然后,您必须选择要获取的文件夹,即文档:

现在,您可以在那里创建文件:

File docsFolder = new File(localRoot + "/toto.txt");
File docsFolder = new File(publicRoot + "/toto.txt");
最后,如果您检查项目是如何构造的,那么您有一个对每个平台都通用的主包:您只能将Java代码放在那里。然后你有一个安卓软件包,所以如果你需要它,你可以添加安卓API,但只能在这个软件包中添加


Charm Down插件正是一个例子,说明了如何在主软件包上使用公共API创建服务,例如,请参阅StorageService,以及它的不同实现,例如,请参阅AndroidStorageService。

为什么在2017年使用ECLIPSE?不再支持ECLIPSE!如果你去掉胶子标签,人们会把它当作一个普通的安卓问题。使用gluon和javafxports标记以避免混淆。对不起,我在这个应用程序中也使用了javafxports gluon charm down,它也已经为桌面开发,没有Android studio。注意:这两个平台经常使用这个应用程序。我更了解如何避免为平台编写专用代码。现在,我正在尝试使用你的第一个解决方案。我已经实现了你的第一个解决方案,并用Android进行了测试。这很好:文件可以在Android私有目录中写入、读取或删除。Ok。当其中一个答案对您有效时,您应该将其标记为已接受的绿色勾号,因为其他人稍后会发现它并知道它是有用的。如果你喜欢这些答案中的任何一个,你也可以投票。这就是SO的工作原理……如何在SO讨论中做出绿色标记?谢谢