我已经迁移到 NativeScript 6.0 ,并且需要一些有关如何使用 Downloads 文件夹中的Android支持库(AndroidX)下载和打开文件的帮助。
实际上,在NS 5.x中,我使用了来自Android支持库(android.support.v4.content.FileProvider)的 FileProvider ,并且效果很好。迁移后,使用(androidx.core.content.FileProvider),打开应用程序时出现错误。
但是在Android文档中,我找不到任何方法或信息来迁移代码以进行本机下载和打开(下载文件夹)。
上一个方法:
private openFile(fileName: string, mimeType: string, extension: string) {
try {
if (isAndroid) {
const intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
const context = applicationModule.android.context;
console.log("android.ctx=", context);
const nativeFile = new java.io.File(fileName);
console.log("nativeFile=", nativeFile);
const uri = android.support.v4.content.FileProvider.getUriForFile(context, "com.otisw.gescon.app.provider", nativeFile);
intent.setDataAndType(uri, mimeType);
intent.addFlags(android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION);
const choosedIntent = android.content.Intent.createChooser(intent, "Open file...");
console.log("choosedIntent=>", choosedIntent);
context.startActivity(choosedIntent);
} else {
// const documents = fs.knownFolders.currentApp();
// const file = this.documents.getFile(fileName);
const open = utils.ios.openFile(fileName);
}
} catch (e) {
console.log(e);
}
}
尝试:
private openFile(fileName: string, mimeType: string, extension: string) {
try {
if (isAndroid) {
const intent = androidx.core.content.IntentCompat.makeMainSelectorActivity(
"android.content.Intent.ACTION_VIEW",
"??"
);
文件参考。d.ts:
/// <reference path="./node_modules/tns-core-modules/tns-core-modules.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/ios.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android/androidx-26.d.ts" />
有人会尝试将“下载并打开”的代码从NativeScript升级到新的AndroidX还是知道解决方法?
谢谢!
答案 0 :(得分:0)
您必须在AndoridX上使用androidx.core.content.FileProvider,在较低版本中使用android.support.v4.content.FileProvider。
随着Android 9.0(API级别28)的发布,出现了一个新版本 支持库AndroidX的一部分,它是Jetpack的一部分。的 AndroidX库包含现有的支持库以及 包括最新的Jetpack组件。
您可以继续使用支持库。历史文物 (那些版本为27或更早版本,并打包为android.support。*) 仍可在Google Maven上使用。但是,所有新图书馆 开发将在AndroidX库中进行。
我们建议在所有新项目中使用AndroidX库。您 还应该考虑将现有项目迁移到AndroidX。