首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileSystem.writeAsStringAsync崩溃

FileSystem.writeAsStringAsync崩溃
EN

Stack Overflow用户
提问于 2021-06-06 19:37:47
回答 1查看 289关注 0票数 2

概述

  1. SDK版本: 41
  2. 平台: Android

我刚刚将我的世博应用程序从40更新到41,然后这一行代码开始崩溃:

代码语言:javascript
复制
await FileSystem.writeAsStringAsync(filename, aux, {
                encoding: FileSystem.EncodingType.UTF8,
            });

,这是整个函数

代码语言:javascript
复制
export async function writeExternalData(data: CombinedDataModelInterfaces) {
    try {
        console.log(TAG, '::writeExternalData::data:', data);
        // const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
        const {status,granted} = await MediaLibrary.requestPermissionsAsync()
        console.log(TAG,'::status:',status,'::granted:',granted)
        if (status === 'granted') {
            let tempname = 'lotusdata_' + new Date().toISOString();
            let filename = FileSystem.documentDirectory + tempname + '.json';
            console.log(TAG, '::filename:' + filename);
            const aux = JSON.stringify(data)
            console.log(TAG,'::data as json string:',aux)
            await FileSystem.writeAsStringAsync(filename, aux, {
                encoding: FileSystem.EncodingType.UTF8,
            });
            console.log(TAG,'::createAssetAsync')
            await MediaLibrary.createAssetAsync(filename);
            console.log(TAG,'::assetAsync created')
            return filename;
        } else {
            return new Error('Permissions denied... :(');
        }
    } catch (error) {
        return error;
    }
}

相关的库版本:

代码语言:javascript
复制
    "expo": "^41.0.0",
    "expo-document-picker": "~9.1.2",
    "expo-file-system": "~11.0.2",
    "expo-media-library": "~12.0.2",
    "expo-permissions": "~12.0.1",
    "expo-sharing": "~9.1.2",
    "expo-sqlite": "~9.1.0",
    "expo-status-bar": "~1.0.4",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-41.0.0.tar.gz",

我得到的本机错误代码

代码语言:javascript
复制
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$4.done(AsyncTask.java:399)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
    at abi41_0_0.expo.modules.medialibrary.MediaLibraryUtils.getRelativePathForAssetType(MediaLibraryUtils.java:1)
    at abi41_0_0.expo.modules.medialibrary.MediaLibraryUtils.getEnvDirectoryForAssetType(MediaLibraryUtils.java:1)
    at abi41_0_0.expo.modules.medialibrary.CreateAsset.createAssetFile(CreateAsset.java:4)
    at abi41_0_0.expo.modules.medialibrary.CreateAsset.doInBackground(CreateAsset.java:4)
    at abi41_0_0.expo.modules.medialibrary.CreateAsset.doInBackground(CreateAsset.java:1)
    at android.os.AsyncTask$3.call(AsyncTask.java:378)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more```
EN

回答 1

Stack Overflow用户

发布于 2021-06-06 22:55:30

您的URI是什么样子的?世博会说,如果它是SAF,您必须在写入文件之前创建该文件。

另外,你的地铁控制台记录在哪里?如果失败了,我会清理android项目。

代码语言:javascript
复制
cd android && ./gradlew clean && cd .. && npm run android
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67863024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档