Я установил фильтр намерений для своей активности, чтобы открыть активность, а также открыть действие, которое вызывается URL. URL содержит специальные символы, такие как знак вопроса и амперсанд. Я не могу его получить, и андроид не знает мое приложение в качестве хоста для этого запроса. Я использую Unicode и HTML-объект для этой проблемы.Специальный символ в схеме активности Android
0
A
ответ
0
Вам не хватает www
в атрибуте data
тега host
. Он должен выглядеть следующим образом:
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="www.example.com"
android:pathPrefix="/index.php"
android:scheme="http"/>
</intent-filter>
Также не включают Params в pathPrefix
, вы можете извлечь их в коде активность:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uri data = getIntent().getData();
if(data != null) {
Log.d(TAG, "onCreate: " + data.toString());
Set<String> names = data.getQueryParameterNames();
for(String name : names) {
Log.d(TAG, "onCreate: param " + name + ": " + data.getQueryParameter(name));
}
}
Попробуй с ADB (примечание сбежавшего &
):
adb shell am start -W -a android.intent.action.VIEW -d "http://www.example.com/index.php?page=share\&type=album\&id=34" com.example.myapplication
Выход:
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: http://www.example.com/index.php?page=share&type=album&id=34
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: param page: share
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: param type: album
12-03 13:10:41.924 32595-32595/com.example.myapplication D/MainActivity: onCreate: param id: 34
+0
Мне нужно управлять ссылками, которые имеют параметры, поэтому я не могу игнорировать это, наконец, я решаю проблему с библиотекой airbnb/DeepLinkDispatch, но все же у меня есть вопрос без ответа. Спасибо –
Можете ли вы добавить пример, как выглядит ваш URL? – arkus
http: www.example.com/index.php? Page = share & type = album & id = 34 –
Почему там нет слэшей ('//') после 'http:'? Я думаю, что это должно выглядеть так: http: //www.example.com/index.php? Page = share & type = album & id = 34' Не могли бы вы также предоставить свой фильтр намерений из манифеста и как вы обрабатываете намерение открытия с помощью этого URL-адреса ? – arkus