0

J'essaye de mettre en application l'indexation d'application pour une de mes applications, mais je ne suis pas tout à fait sûr de ce que je devrais renvoyer comme appUri pour l'indexation d'application Action. Disons que j'ai un nom de paquet et webUrihttp://example.com/some/path.Comment implémenter l'indexation d'une application avec un projet de bibliothèque?

Si je comprends bien, le appUri serait normalement com.example.myapp/http/example.com/some/path dans ce cas, correct?

Maintenant, entrez le projet de bibliothèque que mon application utilise et où l'activité indexée existe. Appelons le projet de bibliothèque com.example.mylibrary et l'activité indexée MyActivity.

Si je veux commencer l'activité à l'aide adb, j'utilise

adb shell am start -W -a android.intent.action.VIEW -d "http://example.com/some/path" com.example.myapp/com.example.mylibrary.MyActivity

Alors, ma question est - ce que devrait l'appUri pour l'indexation de l'application Action dans ce cas? Cela est-il affecté par le fait que l'activité se situe dans le projet de la bibliothèque?

Répondre

0

En général, vous pouvez créer Action par Action.Builder fourni par la bibliothèque. Comme uri vous devez fournir URI connexe. Donc, si vous voulez indexer l'action Voir, vous devez fournir l'URI du produit qui a été visualisé.

Uri.Builder builder = new Uri.Builder(); 
    String uriStr = builder 
     .scheme("http") 
     .authority("example.com") 
     .appendPath("some/path").build().toString(); 

    Action action = new Action.Builder(Action.Builder.VIEW_ACTION) 
     .setObject("productName", uriStr) 
     .build(); 


Pour plus de détails vous pouvez regarder logging actions docs et leur exemple d'application.
Pour tester:

adb shell am start -a android.intent.action.VIEW -d "{URL}" {package name} 

où {nom du package} = com.example.monapplication et URL = http://example.com/some/path

A la fin, votre activité placée dans la bibliothèque devrait avoir l'intention filtre qui peut gérer votre URI http://example.com/some/path

+0

Désolé, mais votre commande 'adb' ne fonctionne pas pour moi, je reçois une erreur: l'activité n'a pas démarré, incapable de résoudre l'intention. Je crois que c'est parce que l'activité est dans le projet de bibliothèque, qui est la raison pour laquelle je pose la question en premier lieu (voir la commande 'adb' dans la question - ça marche parce qu'elle fait référence au projet de bibliothèque) ... – BadCash

+0

Mon mauvais - il se trouve que les guillemets autour de l'URL ont été transformés en guillemets dans ces guillemets fantaisistes ('" "')! Pour une raison quelconque, cela a provoqué 'Error: Activity not started, incapable de résoudre l'intention' lorsque vous utilisiez uniquement le nom du paquet, mais a fonctionné correctement lors de la spécification du nom et de l'activité du package complet. Problème résolu. – BadCash