![](/img/trans.png)
[英]With Cordova android app, how I can access (read/write) SQLite file at shared folder in Win10 device?
[英]xamarin.android - how to get access to read and write sqlite db file from shared context?
我在兩次應用之間共享我的.db sqlite文件。
我成功共享了此文件(因為第二個應用程序可以看到它),並且無法使用它。 我猜這是出於安全原因。
這是我分享的方式:
var Folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
using (var conn = new SQLiteConnection(System.IO.Path.Combine(Folder, "Paczki.db")))
{
conn.CreateTable<Odczyt>();
return true;
};
Context sharedContext = null;
try
{
sharedContext =
this.CreatePackageContext(
"MobilnePaczki.MobilnePaczki", PackageContextFlags.IgnoreSecurity);
}
catch (Exception e)
{
}
using (var conn =
new SQLiteConnection(sharedContext.DataDir.ToString() + "/files/Paczki.db")) //I am sure that file exists
//... Could not open database file: ... files/Paczki.db (CannotOpen)
我試過的
變化PackageContextFlags.IgnoreSecurity
到PackageContextFlags.IncludeCode
..但后來sharedContext = null
將.db文件復制到第二個應用程序,然后連接到該應用程序,然后出現UnauthorizedAccessException
從其他線程像這樣 ,我可以看到,它可以使用數據庫文件從其他應用程序。
您有什么想法要解決這個問題嗎?
UPDATE
感謝Billy的回答,我發現我在AnfroidManifest.xml的<application>
標記中AnfroidManifest.xml
。 正確的方法是在<manifest>
標記中聲明它。
<manifest (...) android:sharedUserId="App.Id">
更改后,在安裝應用程序時出現INSTALL_FAILED_UID_CHANGED
錯誤。 為了解決這個問題,我使用了:
adb shell rm -rf /data/data/appname.appname
我已經測試了您的代碼,它可以正常工作。 在設置sharedUserId之前是否創建了數據庫? 當我測試這種情況時,我遇到了這個問題。 如果是這樣,請卸載並重新安裝該應用程序可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.