2017-11-02 7 views
-2

연락처에 대한 브로드 캐스트 리시버를 디자인하려고합니다. 다른 앱이나 사용자가 연락처 정보를 원할 때 내 앱을 여는 것을 의미합니다. 그것을 할 어떤 수단이 있습니까 (나는 의도 필터에서 그것을 찾지 못했습니다). 또는 나는 나 자신을 디자인해야합니까?연락처보기를위한 BroadcastReceiver

기본적으로 모든 앱이 연락처에 액세스하려고하면 해당 요청은 내 앱을 통과합니다. 연락처에서 변경 감지를 위해 BroadcastReceiver와 같으며, 앱이 연락처에 액세스하려고 할 때 필요합니다.

+1

질문을 편집하고 "다른 앱이나 사용자가 연락처 세부 정보를 원할 때 내 앱을 여는 것"을 자세히 설명하십시오. 또한 방송이 무엇을해야하는지 설명하십시오. – CommonsWare

답변

0

당신은 어떻게해야하나요 :

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 안에 그 mimetypes과 자료 uris.

할 수 있습니다 안드로이드 시스템 연락처 응용 프로그램 매니페스트의 예 : https://android.googlesource.com/platform/packages/apps/Contacts/+/master/AndroidManifest.xml#307

당신은 당신의 홈 화면에 widget 소위 " Contact 1x1"(장치에 따라 다를 수 있습니다 이름)을 추가하여 구현을 테스트 할 수 있습니다

및 선택 어느 위젯에 접속해야하는지 알려줍니다. 이 위젯을 클릭하면 위의 의도 중 하나를 호출해야합니다.

+0

내 질문이 잘못되었습니다. 답변을 이해합니다. contactsContract를 내 앱으로 대체하려고합니다. 커서를 사용하여 데이터를 가져 오지 말고 대신 의도를 작성하고 세부 사항을 수신 할 수 있습니다. –

+0

오케이, 알겠습니다. 앱을 사용하여 연락처 정보를 얻기 위해 휴대 전화에 다른 앱을 제공 할 예정입니까? 내 대답에있는 것과 같은 그 의도는 어떻게 생겼을까요? – marmor

+0

예, 별도의 연락처 제공 업체처럼 –