web-dev-qa-db-fra.com

Android URL personnalisée pour ouvrir l'application comme dans iOS

Je peux ajouter un lien vers, par exemple, 'navigon: //' sur un site Web qui, dans les appareils iOS, ouvrira l'application Navigon si elle est installée.

Existe-t-il une méthode simple similaire pour ouvrir une application à partir d'un site Web (en supposant qu'elle soit installée) dans Android?

30
MaFt

Liens profonds Android: ajoutez un filtre d'intention à votre manifeste

<activity
Android:name="com.example.Android.GizmosActivity"
Android:label="@string/title_gizmos" >
<intent-filter Android:label="@string/filter_title_viewgizmos">
    <action Android:name="Android.intent.action.VIEW" />
    <category Android:name="Android.intent.category.DEFAULT" />
    <category Android:name="Android.intent.category.BROWSABLE" />
    <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
    <data Android:scheme="http"
          Android:Host="www.example.com"
          Android:pathPrefix="/gizmos" />
    <!-- note that the leading "/" is required for pathPrefix-->
    <!-- Accepts URIs that begin with "example://gizmos”
    <data Android:scheme="example"
          Android:Host="gizmos" />
    -->
</intent-filter>

https://developer.Android.com/training/app-indexing/deep-linking.html

20
DeaMon1

Découvrez filtres d'intention dans Android. Découvrez la catégorie spécialement.

6
Aman Alam

Voir Tout ce que vous devez savoir sur la mise en œuvre d'iOS et Android Mobile Deep Linking . Ceci est un bon article pour Android et iOS.

Vous savez peut-être déjà qu'il existe Deep Links , et à partir de Android 6.0 Android App Links est apparu. Ces derniers sont destinés à ouvrir une URL uniquement dans votre application, pas dans toute autre compétition. Par exemple, reddit.com peut être ouvert dans 7 applications, sinon utilisez cette vérification.

enter image description here

Vous pouvez associer chaque Activity dont vous avez besoin à des liens à partir desquels il doit être ouvert. Par exemple, si vous souhaitez ouvrir dans l'application des liens comme https://awesomejobs.com/jobs/{id}, vous devez ajouter ces lignes à AndroidManifest.xml:

<activity Android:name="com.awesomejobsapp.ui.activity.JobActivity">
    <intent-filter>
        <action Android:name="Android.intent.action.VIEW" />

        <category Android:name="Android.intent.category.BROWSABLE"/>
        <category Android:name="Android.intent.category.DEFAULT" />

        <data Android:scheme="https"
              Android:Host="awesomejobs.com"
              Android:pathPrefix="/jobs" />
    </intent-filter>
</activity>

Puis dans JobActivity écrivez (un code est reçu d'un article en russe):

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.ac_job);

   final Intent intent = getIntent();
   final String action = intent.getAction();
   final String data = intent.getDataString();

   if (Intent.ACTION_VIEW.equals(action) && data != null) {
      final String jobId = data.substring(data.lastIndexOf("/") + 1);
      loadJobDetails(jobId);
   }
}
0
CoolMind