Android - запуск моего приложения из гиперссылки по электронной почте? - PullRequest
0 голосов
/ 23 ноября 2011

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

Любая идея?Пожалуйста, помогите в этом.

Заранее спасибо.

1 Ответ

2 голосов
/ 23 ноября 2011

Это можно сделать с помощью пользовательской схемы URI (например, URL-адресов market:, которые обрабатываются приложением Market) или с помощью пользовательского действия со схемой intent:.

В обоихВ случаях, когда вы должны создать действие, которое будет запущено, когда пользователь нажимает на вашу ссылку.

Давайте сначала рассмотрим первый случай:

1.Пользовательская схема

Начните с объявления активности в манифесте:

<activity android:name="LinkHandler">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
      android:scheme="SACPK" android:host="www.anyhost.com" />
  </intent-filter>
</activity>

В этом случае ссылка должна выглядеть следующим образом: SACPK://www.anyhost.com/anything-goes-here.

Ваша деятельность получитвся ссылка в намерении, чтобы вы могли обработать ее и решить, что делать дальше, основываясь на параметрах запроса или пути:

public class LinkHandler extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Uri uri = getIntent().getData();
        // this is the URI containing your link, process it
    }
}

2.intent: схема

На этот раз ссылка должна иметь следующий формат:

intent:#Intent;action=com.sacpk.CUSTOM_ACTION;end

И фильтр намерений должен содержать соответствующее действие, которое вы будете проверять в своей активности:

<intent-filter>
  <action android:name="com.sacpk.CUSTOM_ACTION" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

И в вашем onCreate методе:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if ("com.sacpk.CUSTOM_ACTION".equals(getIntent().getAction()) {
         // then you really know you got here from the link
    }
}

Недостатком этого метода является то, что вы не получите никаких данных с вашим намерением.

Весь этот ответна основе блестящей книги commonsware, Руководство занятого программиста по продвинутой разработке под Android .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...