Это можно сделать с помощью пользовательской схемы 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 .