仅在Android真机中React原生项目中sqlite存储有问题?

问题描述 投票:0回答:1

我构建了一个 mp3 应用程序,它从服务器获取数据并将其保存在应用程序的 sqlite 数据库中。我为此使用react-native-sqlite-storage。
我奇怪的问题是,在苹果模拟器和真实设备中一切都正常。它在 Android 模拟器中也运行良好,但是当我们在任何 Android 设备上实际尝试该应用程序时,数据根本无法提取?

还有其他人在使用 Android 数据库时遇到同样的问题吗?

这足以创建/打开数据库吗?还是安卓需要更多?

const db = SQLite.openDatabase({     name: 'xaspeakers.db',   });

android react-native sqlite
1个回答
0
投票

您在 Android 设备上的 SQLite 存储问题可能与权限有关。在模拟器或 iOS 上运行时,与真实的 Android 设备相比,权限可能不太严格。

要解决此问题:

  1. 检查权限:确保您的应用程序请求并被授予必要的存储权限。在 React Native 中,您可以使用

    PermissionsAndroid
    模块来请求权限。确保在访问设备存储之前请求并处理权限。

    import { PermissionsAndroid } from 'react-native';
    
    async function requestStoragePermission() {
      try {
        const granted = await PermissionsAndroid.request(
          PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
          {
            title: 'Storage Permission',
            message: 'App needs access to storage for storing data.',
            buttonNeutral: 'Ask Me Later',
            buttonNegative: 'Cancel',
            buttonPositive: 'OK',
          },
        );
        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
          console.log('Storage permission granted.');
        } else {
          console.log('Storage permission denied.');
        }
      } catch (err) {
        console.warn(err);
      }
    }
    
    // Call requestStoragePermission before any storage-related operations.
    
  2. 检查数据库初始化:确保数据库初始化没有错误。确认表已正确创建并打开。

  3. 调试数据获取:在 Android 设备上调试数据获取代码。使用调试工具检查流程并查找任何错误或问题。

这应该可以帮助您解决真实 Android 设备上的问题。请记住使代码片段适应您的特定应用程序结构。

© www.soinside.com 2019 - 2024. All rights reserved.