微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问存储在 Android Q 内部存储器中的数据库

如何解决访问存储在 Android Q 内部存储器中的数据库

我想访问存储在内部存储中的数据库。我正在使用以下代码来执行此操作。

db_connection_string = "URI=file:" + GetAndroidInternalFilesDir() + "/employee.db";
Debug.Log("db_connection_string" + db_connection_string);
db_connection = new sqliteConnection(db_connection_string);

以下是我的 GetAndroidInternalFilesDir 函数

public static string GetAndroidInternalFilesDir()
{
    string[] potentialDirectories = new string[]
    {
        "/storage/Company","/sdcard/Company","/storage/emulated/0/Company","/mnt/sdcard/Company","/storage/sdcard0/Company","/storage/sdcard1/Company"
    };

    if(Application.platform == RuntimePlatform.Android)
    {
        for(int i = 0; i < potentialDirectories.Length; i++)
        {
            if(Directory.Exists(potentialDirectories[i]))
            {
                return potentialDirectories[i];
            }
        }
    }
    return "";
}

以上代码

更新:

我使用以下代码触发了范围存储的权限,但仍然显示成功为零。

void initiate()
{
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject packageManager = jc.Call<AndroidJavaObject>("getPackageManager");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION");
    AndroidJavaObject launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage",packageManager);
    launchIntent = jo.Call<AndroidJavaObject>("setData",packageManager);
    jc.Call("startActivity",launchIntent);
}

解决方法

如果您想在列出的目录中搜索(不在您的应用范围内),那么您需要 MANAGE_EXTERNAL_STORAGE 权限。 HERE

中的一些文档

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。