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中声明文件访问权限,如
NSAppleMusicUsageDescription
、NSPhotoLibraryUsageDescription
等,具体取决于你访问的文件类型。 - 调试与日志:使用开发者工具的控制台输出日志,帮助定位问题。
上述代码提供了一个基本的框架,帮助你在uni-app中实现文件的读写操作。如果问题依旧存在,请检查具体的错误信息和日志,以便进一步调试。