タグ付けされた質問 「android-contentprovider」

17
インストールでコンソールにエラーが表示される:INSTALL FAILED CONFLICTING PROVIDER
Android SDKのNotesListサンプルプログラムを実験しています。プログラムに若干の変更を加えましたが、編集したバージョンをインストールすると、元のノートプログラムが既にデバイスにあるときにインストールしようとすると、コンソールにメッセージINSTALL_FAILED_CONFLICTING_PROVIDERが表示され続けます。プロバイダーを一意のデータベースにするためにプロバイダーで何を変更する必要がありますか?オリジナルのノートプログラムをアンインストールして、編集したバージョンをインストールすると、問題なく動作します。

9
他のアプリとコンテンツを共有するためのサポートFileProviderの使用方法
AndroidサポートライブラリのFileProviderを使用して、内部ファイルを外部アプリケーションと正しく(OPENではなく)共有する方法を探しています。 ドキュメントの例に従って、 <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.example.android.supportv4.my_files" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/my_paths" /> </provider> そして、ShareCompatを使用して、次のようにファイルを他のアプリと共有します。 ShareCompat.IntentBuilder.from(activity) .setStream(uri) // uri from FileProvider .setType("text/html") .getIntent() .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) FLAG_GRANT_READ_URI_PERMISSION dataはインテントので指定されたUriにのみ許可を与えるので機能しません。EXTRA_STREAMエクストラの値ではなく(によって設定されたようにsetStream)許可します。 プロバイダーandroid:exportedにtrueを設定してセキュリティを危険にさらそうとしましたがFileProvider、それ自体がエクスポートされているかどうかを内部で確認しました。

14
Gradleでビルドタイプを使用して、1つのデバイスでContentProviderを使用する同じアプリを実行する
使用しているリリースバージョンと1台の電話でデバッグバージョンを使用できるように、デバッグアプリにパッケージ名サフィックスを追加するようにGradleを設定しました。私はこれを参照していました:http : //tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Types 私のbuild.gradleファイルは次のようになります。 ... android { ... buildTypes { debug { packageNameSuffix ".debug" versionNameSuffix " debug" } } } アプリでContentProviderを使い始めるまで、すべてが正常に機能します。私は得ます: Failure [INSTALL_FAILED_CONFLICTING_PROVIDER] これは、2つのアプリ(リリースとデバッグ)が同じContentProvider権限を登録しているために発生することを理解しています。 これを解決する可能性が1つあります。正しく理解できれば、ビルド時に使用する別のファイルを指定できるはずです。次に、さまざまな権限をさまざまなリソースファイル(およびマニフェストから権限を文字列リソースとして設定)に入れ、Gradleにデバッグビルドにさまざまなリソースを使用するように指示できるはずです。それは可能ですか?はいの場合、それを達成する方法に関するヒントは素晴らしいでしょう! または、Gradleを使用してマニフェストを直接変更することは可能ですか?1つのデバイスでContentProviderを使用して同じアプリを実行する方法に関する他のソリューションはいつでも歓迎します。

2
ContentResolver.requestSyncが同期をトリガーしないのはなぜですか?
Google IO-スライド26 で説明されているように、Content-Provider-Syncアダプターパターンを実装しようとしています。コンテンツプロバイダーは機能しており、Dev Tools Sync Testerアプリケーションからトリガーすると同期が機能しますが、ContentResolverを呼び出します。 ContentProviderからのrequestSync(account、authority、bundle)、同期がトリガーされることはありません。 ContentResolver.requestSync( account, AUTHORITY, new Bundle()); 編集-追加されたマニフェストスニペット私のマニフェストxmlには以下が含まれます: <service android:name=".sync.SyncService" android:exported="true"> <intent-filter> <action android:name="android.content.SyncAdapter" /> </intent-filter> <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter" /> </service> -編集 同期サービスに関連付けられている私のsyncadapter.xmlには、次のものが含まれています。 <?xml version="1.0" encoding="utf-8"?> <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="AUTHORITY" android:accountType="myaccounttype" android:supportsUploading="true" /> 他にどんなコードが役に立つかわかりません。requestSyncに渡されたアカウントは「myaccounttype」であり、呼び出しに渡されたAUTHORITYは私のsycアダプタxmlと一致します。 ContentResolver.requestSyncは同期をリクエストする正しい方法ですか?同期テスターツールはサービスに直接バインドしてstart syncを呼び出すように見えますが、同期アーキテクチャとの統合の目的に反するようです。 それが同期を要求する正しい方法である場合、なぜ同期テスターは機能しますが、ContentResolver.requestSyncへの私の呼び出しは機能しませんか?バンドルで渡す必要があるものはありますか? 2.1と2.2を実行しているデバイスのエミュレータでテストしています。

5
ContentProviderを使用しないCursorLoaderの使用
Android SDKのドキュメントには、startManagingCursor()メソッドは廃止されていると書かれています: このメソッドは非推奨です。代わりに、LoaderManagerで新しいCursorLoaderクラスを使用してください。これは、Android互換性パッケージを通じて古いプラットフォームでも利用できます。このメソッドを使用すると、アクティビティは、アクティビティのライフサイクルに基づいて、指定されたカーソルのライフサイクルを管理します。つまり、アクティビティが停止すると、指定したCursorでdeactivate()が自動的に呼び出され、後で再起動するとrequery()が呼び出されます。アクティビティが破棄されると、管理されているすべてのカーソルが自動的に閉じられます。HONEYCOMB以降をターゲットにしている場合は、代わりにLoaderManagerを使用することを検討してください。 だから私は使用したいと思いますCursorLoader。しかし、コンストラクタでURIが必要なときに、カスタムでCursorAdapter、なしContentProviderでどのように使用できCursorLoaderますか?

9
コンテンツプロバイダーを使用する場合
コンテンツプロバイダーは、アプリケーション間でデータを公に共有できるように作られていることを理解しています。ただし、コンテンツプロバイダーを自分のアプリ内でのみ使用することを考えている人がいるかどうかは疑問です。これを行うことには利点がありますか?欠点はありますか? 以前は、データベースのデータにアクセスするためにSQliteOpenHelperを実装したばかりですが、コンテンツプロバイダーの作成を検討しています。データを要求するためのURIアプローチは明確で簡潔なように感じます。一方、私のアプリケーションだけにコンテンツプロバイダーを使用すると冗長になります(その中にはSQliteOpenHelperクラスが含まれるため)、必要以上の作業が発生しますか?

5
Androidのコンテンツプロバイダーを使用して複数のテーブルを公開するためのベストプラクティス
イベント用のテーブルと会場用のテーブルがあるアプリを作成しています。他のアプリケーションにこのデータへのアクセスを許可できるようにしたい。この種の問題のベストプラクティスに関していくつか質問があります。 データベースクラスはどのように構成すればよいですか? 現在、EventsDbAdapterとVenuesDbAdapterのクラスがあります。これらのクラスは、各テーブルをクエリするためのロジックを提供し、データベースバージョンの管理、データベースの作成/アップグレード、データベースへのアクセス(getWriteable / ReadeableDatabase)のための個別のDbManager(SQLiteOpenHelperを拡張)を備えています。これは推奨される解決策ですか、それともすべてを1つのクラス(つまり、DbManager)に統合するか、すべてを分離して、各アダプタにSQLiteOpenHelperを拡張させた方がよいでしょうか? 複数のテーブルのコンテンツプロバイダーを設計するにはどうすればよいですか? 前の質問を拡張して、アプリ全体に1つのコンテンツプロバイダーを使用する必要がありますか、それともイベントと会場に個別のプロバイダーを作成する必要がありますか? 私が見つけたほとんどの例は単一テーブルのアプリのみを扱っているので、ここでのポインタに感謝します。

9
「Content-Provider」と「SQLiteDatabase」の正確な違い
私はAndroid用のSQLiteデータベースプログラミングを行いましたが、これ以外はContent-Providerについて何も知りません。「AndroidDeveloperページを参照したので、Android SDKは、データの保存と取得に使用される「Content-provider」について説明しました。」 しかしその後、 「Content-Provider」と「SQLiteDatabase」の正確な違いは何ですか? データを保存するのに最適なのはいつですか? 任意の例または助けます!!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.