2017-11-02 11 views
-2

私は連絡先のための放送受信機を設計しようとしています、それは他のアプリやユーザーが連絡先の詳細を望むとき、私のアプリを開きます。それを行う手段がありますか(私はインテントフィルターでそれを見つけませんでした)。または私は自分自身を設計する必要がありますか?連絡視聴のためのBroadcastReceiver

基本的に、いずれかのアプリが連絡先にアクセスしようとすると、そのリクエストは私のアプリを経由します。それは、連絡先の変更の検出のためのBroadcastReceiverのようなものです。私は、アプリケーションが連絡先にアクセスしたいときに、それを望みます。あなたは何をすべき

+1

あなたの質問を編集して、「他のアプリやユーザーが連絡先の詳細を希望するときには、自分のアプリを開く」ということを詳しく説明してください。また、放送がこれに関係していることを説明してください。 – CommonsWare

答えて

0

:sは背中の情報を取得するために設計されていない

BroadcastReceiver、代わりにあなた自身ContentProviderを実装することにより、コンタクトAPIはそれを行うだけのようなパターンを実装することができます。

あなたのアプリにContentProviderを作成して、他のアプリがあなたのContentProvider上で連絡先ContentProviderと同じように照会できるようにします。

tutorialを参照してください。

あなたがたとえば、あなたがあなたのコンテンツが見えるようにURIをする方法を設計する必要があります。

vnd.android.cursor.item/my_app/contact単一接触

についての情報を取得するためにそして、あなたはまた、あなたにあなたの<provider>にカスタムのアクセス許可を追加することを検討すべきですまた、許可されたアプリもあなたのデータにアクセスすることができます。

オリジナル回答:

すでに以下のインテントを追加し、あなたのAndroidManifestで、連絡先を表示するためのActivityをお持ちの場合:

<activity 
    android:name="..." 
    ...> 

      <intent-filter> 
       <action android:name="com.android.contacts.action.QUICK_CONTACT" /> 
       <action android:name="android.provider.action.QUICK_CONTACT" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:mimeType="vnd.android.cursor.item/contact" /> 
       <data android:mimeType="vnd.android.cursor.item/person" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:mimeType="vnd.android.cursor.item/person" /> 
       <data android:mimeType="vnd.android.cursor.item/contact" /> 
       <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 
      </intent-filter> 

</activity> 

あなたが適切と入ってくるインテントを処理する必要がありますあなたのActivityのこれらのMIMEタイプとデータのuris。

することはできAndroidシステムの連絡先アプリのマニフェストの例: https://android.googlesource.com/platform/packages/apps/Contacts/+/master/AndroidManifest.xml#307

あなたのホームスクリーンに widgetと呼ばれる「 Contact 1x1」(デバイスによって異なる場合があります名前)を追加することによって、あなたの実装をテストすることができます

、および選択ウィジェットが起動するはずです。 このウィジェットをクリックすると、上記のインテントの1つを呼び出す必要があります。

+0

私の質問は間違っています、私はあなたの答えを理解しています。私は私のアプリとcontactsContractを置き換えたいです。カーソルを使用してデータを取得するのではなく、インテントを作成して詳細を受け取ることができます。 –

+0

よろしいですか、アプリを使用して連絡先情報を取得するために電話で他のアプリを提供しますか?私の答えにあるもののように、その意図はどのように見えるでしょうか? – marmor

+0

はい、別の連絡先と同様です –

関連する問題