2016-09-12 11 views
2

タイトルによれば、Javaで書かれたAndroidアプリとXamarinを使用してC#で書かれたAndroidアプリの間でSqliteデータベースを共有したいと考えています。私は成功した2つのJavaアプリケーション(With the help of this question)が、私はXamarinで同じことをしようとすると、私は次のエラーを取得しています間でデータベースを共有することができます。XamarinアプリケーションとJava Androidアプリケーションの間でsqliteデータベースを共有する方法

Android.Database.Sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

私は二つの問題があると思います。

  1. 私はShared UserIdを正しく設定していません。現在、主な活動の上に次の属性を配置しています。

    [Register("my.user.id")]

    私は、マニフェストファイルでandroid:sharedUserId="my.user.id"を使用してみましたが、それはエラーを投げていたし、私のデバイスへの展開ではないでしょう。

  2. 私はアプリの署名がどのように機能するのか分かりません。だから私のデバイスは、2つのアプリケーションが各デバイスの別のパブリッシャから来ていると見て、2人がコンテキストを共有することを許可していない可能性があります。

EDIT:
はちょうど私が将来refrenceに同じ証明書を使用して、両方のアプリケーションに署名した方法を追加したいです。

Android証明書はnoramlly "C:\Users\userName\.android\debug.keystore"であり、Xamarin証明書は"C:\Users\userName\AppData\Local\Xamarin\Mono for Android\debug.keystore"にノーマリです。私はXamarinアプリを最初に構築したので、xamarinフォルダからdebug.keystoreファイルをアンドロイドにコピーしました。 (私はそれが別の方法で動作しますが、それをテストしていないと確信しています)

答えて

2

Xamarin.AndroidApplicationAttributeを介してSharedUserIdをサポートしていません。 Android.App.ApplicationAttribute

マニフェストを経由して、共有ユーザーIDを追加し、それが正常に動作します:

例:

<application android:allowBackup="true" android:sharedUserId="com.sushihangover" android:icon="@mipmap/icon" android:label="@string/app_name"></application> 

が参考に(私はすべてがそれについて問題を提起し、誰を推測しません)注:両方のアプリを手動でアンインストールし、sharedUserIdを追加して、両方のアプリを再構築して再インストールするようにしてください。

注:JavaとXamarinの両方のアプリケーションで同じ署名証明書を使用していることを確認してください。

関連する問題