uni-app 有没有大佬读写手机存储不管用?

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 有没有大佬读写手机存储不管用?
离线打包开启权限缺少文件

图片

云打包开启权限会有文件

图片

云打包打开红框内所有文件都可以获取到本地路径,离线打包只能在手机内部存储获取,这是什么原因?

图片

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android">  

    <!-- 读写权限 -->  
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

    <application  
        android:allowBackup="true"  
        android:allowClearUserData="true"  
        android:icon="@drawable/icon"  
        android:label="@string/app_name"  
        android:largeHeap="true"  
        android:supportsRtl="true"  
        android:requestLegacyExternalStorage="true">  
        <activity  
            android:name="io.dcloud.PandoraEntry"  
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"  
            android:label="@string/app_name"  
            android:launchMode="singleTask"  
            android:hardwareAccelerated="true"  
            android:theme="@style/TranslucentTheme"  
            android:screenOrientation="user"  
            android:exported="true"  
            android:windowSoftInputMode="adjustResize" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <activity  
            android:name="io.dcloud.PandoraEntryActivity"  
            android:launchMode="singleTask"  
            android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"  
            android:hardwareAccelerated="true"  
            android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"  
            android:screenOrientation="user"  
            android:theme="@style/DCloudTheme"  
            android:exported="true"  
            android:windowSoftInputMode="adjustResize">  
            <intent-filter>  
                <category android:name="android.intent.category.DEFAULT" />  
                <category android:name="android.intent.category.BROWSABLE" />  
                <action android:name="android.intent.action.VIEW" />  
                <data android:scheme=" " />  
            </intent-filter>  
        </activity>  
        <meta-data  
            android:name="dcloud_appkey"  
            android:value="99a20518bf08c33f1e" />  
        <meta-data android:name="DCLOUD_WRITE_EXTERNAL_STORAGE" android:value="always"/>  
    </application>  
</manifest>

5 回复

有没有遇到过的大佬


有没有遇到过的大佬1

有没有遇到过的大佬2

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

在uni-app中,读写手机存储涉及到访问设备的文件系统,这通常需要获取用户的权限,并依赖于平台(如Android和iOS)的特定API。如果你遇到读写手机存储不管用的问题,可能是因为权限未正确申请,或者读写代码实现有误。以下是一些示例代码,展示如何在uni-app中申请权限并进行基本的读写操作。

1. 权限申请(以Android为例)

manifest.json中配置必要的权限:

"mp-weixin": { // 或其他平台配置
    "appid": "your-app-id",
    "permission": {
        "scope.writePhotosAlbum": {
            "desc": "你的位置信息将用于小程序相册"
        },
        "scope.readWriteUserData": {
            "desc": "你的信息将用于小程序读写用户数据"
        }
    }
}

注意:uni-app中的权限配置会根据不同平台有所不同,上述配置主要针对微信小程序。对于Android原生应用,你可能需要在AndroidManifest.xml中配置权限。

2. 读写文件(以Android和iOS为例)

使用uni-app提供的uni.getFileSystemManager()进行文件读写操作:

// 获取文件系统管理器
const fs = uni.getFileSystemManager();

// 写文件
fs.writeFile({
    filePath: uni.env.USER_DATA_PATH + '/test.txt', // 文件路径
    data: 'Hello, uni-app!', // 写入内容
    encoding: 'utf8',
    success: function() {
        console.log('文件写入成功');
    },
    fail: function(err) {
        console.error('文件写入失败', err);
    }
});

// 读文件
fs.readFile({
    filePath: uni.env.USER_DATA_PATH + '/test.txt', // 文件路径
    encoding: 'utf8',
    success: function(res) {
        console.log('文件读取成功', res.data);
    },
    fail: function(err) {
        console.error('文件读取失败', err);
    }
});

3. 注意事项

  • 确保在读写文件前已经获取了用户的相应权限。
  • 路径问题:不同平台(如Android和iOS)的文件系统路径可能不同,使用uni.env.USER_DATA_PATH来获取应用沙盒内的路径是一个较为安全的选择。
  • 权限问题:对于iOS,可能需要在Info.plist中声明文件访问权限,如NSAppleMusicUsageDescriptionNSPhotoLibraryUsageDescription等,具体取决于你访问的文件类型。
  • 调试与日志:使用开发者工具的控制台输出日志,帮助定位问题。

上述代码提供了一个基本的框架,帮助你在uni-app中实现文件的读写操作。如果问题依旧存在,请检查具体的错误信息和日志,以便进一步调试。

回到顶部