gpt4 book ai didi

java - 关于android文件管理、Android环境概念和android库插件

转载 作者:行者123 更新时间:2023-12-01 08:55:54 25 4
gpt4 key购买 nike

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

File docsFolder = new File(Environment.getExternalStorageDirectory() + "/toto.txt");

所以,我必须导入import 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 文件中添加了“apply plugin: 'android-library'”(见下文)。

在这种情况下,在 Gradle“刷新全部”上,我得到:

"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-library'”。

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

src/android/res/AndroidManifest.xml:

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

注意:以前,在Java源中,Android系统中没有这个文件管理,我生成.apk没有问题。我还没有处理 gradle。

非常感谢您的帮助。

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.2'
}
}

apply plugin: 'org.javafxports.jfxmobile'
apply plugin: 'android-library'

repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}

mainClassName = 'com.gluonapplication.GluonApplication'

dependencies {
compile 'com.gluonhq:charm:4.3.0'
compile files('libs/android-support-v4.jar')
}

jfxmobile {
downConfig {
version '3.2.0'
plugins 'accelerometer', 'compass', 'device', 'orientation', 'storage', 'vibration', 'display', 'magnetometer', 'lifecycle', 'statusbar', 'position'
}

android {
applicationPackage = 'com.gluonapplication'
manifest = 'src/android/AndroidManifest.xml'
androidSdk = 'C:/Users/pascal/AppData/Local/Android/sdk'
resDirectory = 'src/android/res'
compileSdkVersion = '25'
buildToolsVersion = '25.0.1'


}

ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}

最佳答案

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

如果您想访问给定文件夹,您可以使用存储插件。

检查API here

您可以获得私有(private)文件夹( bundle 在您的应用程序中)或公共(public)文件夹。

对于与您的应用相关的数据,我将使用私有(private)文件夹:

File localRoot = Services.get(StorageService.class)
.flatMap(s -> s.getPrivateStorage())
.orElseThrow(() -> new RuntimeException("Error retrieving private storage"));

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

File docsFolder = new File(localRoot + "/toto.txt");

对于公共(public)的,首先您需要检查它是否可用(媒体已安装并且您有写入权限):

boolean storageAvailable = Services.get(StorageService.class)
.map(service -> service.isExternalStorageWritable())
.orElse(false);

然后您必须选择要获取的文件夹,即Documents:

File publicRoot = Services.get(StorageService.class)
.flatMap(s -> s.getPublicStorage("Documents"))
.orElseThrow(() -> new RuntimeException("Error retrieving public storage"));

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

File docsFolder = new File(publicRoot + "/toto.txt");

最后,如果您检查项目的结构,就会发现您有一个每个平台都通用的主包:您只能在其中放置 Java 代码。然后你就有了一个 Android 包,所以如果你需要它,你可以添加 android API,但只能在这个包中。

Charm Down 插件正是一个示例,说明如何在主包上使用通用 API 创建服务(即参见 StorageService here )及其不同的实现(即参见 AndroidStorageService here )。

关于java - 关于android文件管理、Android环境概念和android库插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42039578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com