2014-09-18 2 views
2

Я ищу способ установить связь между контактом и Android-приложением. Примером этого является Whatsapp, это приложение связывается с контактом и позволяет запустить приложение whatsapp с номером в качестве параметра. Я не смог найти способ сделать это, и мне было интересно, есть ли кто-то с эксплойством в этой области.Запуск приложения из списка контактов

Ваша помощь очень ценится

+0

Хотя я согласен с ответом, указывая вам на '<намерения фильтра>', я очень скептически, что ' 'ответ, который является хорошим, использовать. Если у вас уже установлен Whatsapp, установите [приложение App Browser] (https://play.google.com/store/apps/details?id=com.japanesecrackers.appbrowser), и вы можете проверить манифест Whatsapp, чтобы узнать, что они могут быть там, которые привязывали бы их к приложению контактов. – CommonsWare

+0

Я думаю, что 'намерение-фильтр', безусловно, правильный путь для достижения этого. Я совершенно уверен, что это - по крайней мере часть решения WhatsApps. – DaniEll

ответ

1

я не пытался, но я надеюсь, что мой ответ будет полезным для вас.

Чтобы уточнить, вы хотите, чтобы ваше приложение было в разделе «Связи», как WhatsApp приложение:
enter image description here

В этом случае вы должны использовать Account Manager Если вы идете в настройки телефона в «Учетные записи и Sync»вы должны увидеть все пользовательские счета, зарегистрированных на телефоне: enter image description here

к сожалению, за не предоставление точных фрагментов кода, но я надеюсь, что это было полезно для вас, и вы можете нагуглить свой вопрос (ищу менеджер аккаунта). Может быть, эти ссылки будут полезны для вас тоже:

create custom account android
Custom Account Type with Android AccountManager

+1

Это именно то, что я искал, с этой информацией я нашел следующую ссылку, которая добавляет код к вашему ответу: http://www.c99.org/2010/01/23/запись-ан-андроид-синхронизация поставщик-часть-2 / –

1

Intent-Filter это путь!

В вашем AndroidManifest.xml вы должны сообщить Android, что ваше приложение может ответить на такое намерение.
Пример:

<application ... > 
    <activity ... > 
     <intent-filter> 
      <action android:name="android.intent.action.SENDTO" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="sms" /> 
      <data android:scheme="smsto" /> 
     </intent-filter> 
    </activity> 
</application> 

Чем ваша деятельность может получить доступ к данным Intents при вызове.
Пример:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // get intent-data 
    Intent intent = getIntent(); 
    if (Intent.ACTION_SENDTO.equals(intent.getAction())) { 
     Toast.makeText(this, intent.getDataString(), Toast.LENGTH_LONG).show(); 
    } 
    // close activity 
    finish(); 
} 

С помощью этого кода вы можете выбрать приложение в качестве приемника, когда другое приложение (например, контакты), выстреливает такой Intent.
Примера уволить такой Intent (Скриншот из списка контактов):
Screenshot from Contacts

+0

Спасибо за ваш ответ. Я уверен, что использование фильтров намерений - это путь, но фильтр, который я должен использовать, для меня непонятен. В вашем примере вы добавляете слушателя к кнопке SendText, но я не хочу переопределять возможности пользователей использовать текстовую кнопку. Я хотел бы добавить дополнительную кнопку, как приложение, как whatsapp использует –