J'ai défini un filtre d'intention pour mon activité afin d'ouvrir l'activité, tandis que l'activité est ouverte lorsque l'URL est appelée. URL contient des caractères spéciaux comme le point d'interrogation et l'esperluette je ne peux pas l'obtenir et Android ne connais pas mon application en tant qu'hôte pour cette demande. J'utilise Unicode et l'entité HTML pour ce problème est resté non résolu.Caractère spécial dans le schéma d'activité Android
0
A
Répondre
0
Il vous manque www
dans l'attribut host
de la balise data
. Il devrait ressembler à ceci:
<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>
Aussi ne comprennent pas params dans pathPrefix
, vous pouvez les extraire dans le code d'activité:
@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));
}
}
test avec adb (note échappé &
):
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
sortie est:
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
J'ai besoin de gérer les liens qui ont params donc je ne peux pas ignorer cela, enfin je résous le problème avec la bibliothèque airbnb/DeepLinkDispatch, mais j'ai encore ma question sans réponse. Je vous remercie –
Pouvez-vous ajouter un exemple à quoi ressemble votre URL? – arkus
http: www.example.com/index.php? Page = share & type = album & id = 34 –
pourquoi il n'y a pas de barre oblique ('//') après 'http:'? Je pense que cela devrait ressembler 'http: //www.example.com/index.php? Page = partager & type = album & id = 34' Pourriez-vous également fournir votre intention-filtre du manifeste et comment vous gérez l'intention d'ouverture avec cette URL ? – arkus