Chrome での Android インテント

Android インテントを使用して、Android デバイスのウェブページから直接アプリを起動できます。カスタム スキームでアプリを起動するユーザー操作を実装するか、intent: 構文を使用できます。

インテント アンカーを作成してページ内に埋め込むと、ユーザーがアプリの起動を選択できるようになります。これにより、アプリの起動方法とタイミングを柔軟に設定できるため、インテント エクストラを使用してアプリに情報を渡すことができます。

インテントベースの URI の基本的な構文は次のとおりです。

intent:  
   HOST/URI-path // Optional host  
   #Intent;  
      package=\[string\];  
      action=\[string\];  
      category=\[string\];  
      component=\[string\];  
      scheme=\[string\];  
   end;

解析について詳しくは、Android ソースコードをご覧ください。

インテントが解決されない場合、または外部アプリが起動しない場合、ユーザーは代替 URL にリダイレクトされる可能性があります。インテント エクストラを使用して代替 URL を指定できます。

S.browser_fallback_url=[encoded_full_url]

S.<name> を使用してインテント エクストラを定義します。このエクストラには下位互換性があります。Chrome は browser_fallback_url を削除するため、ターゲット アプリはこの値を認識しません。

以下の場合、外部アプリケーションは起動されません。

  • インテントを解決できません。つまり、どのアプリもインテントを処理できません。
  • JavaScript タイマーが、ユーザー操作なしでアプリケーションを開こうとしました。

以下は、Zxing バーコード スキャナアプリを起動するインテントです。

intent:  
   //scan/  
   #Intent;  
      package=com.google.zxing.client.android;  
      scheme=zxing;  
   end;

Zxing バーコード スキャナ アプリを起動するには、アンカーで href をエンコードします。

  <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end">
    Take a QR code
  </a>

パッケージとホストを定義する Android Zxing マニフェストをご覧ください。

代替 URL が指定されている場合、完全な URL は次のようになります。

   <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">
    Take a QR code
  </a>

これで、アプリが見つからない場合、ユーザー操作なしで JavaScript によってリンクがトリガーされた場合、または外部アプリを起動しない場合などに、URL からユーザーを zxing.org に誘導できるようになりました。

考慮事項

エクストラを含むインテントで Android アクティビティを呼び出すと、エクストラの詳細も含めることができます。

このメソッドを使用して呼び出すことができるのは、カテゴリ フィルタ android.intent.category.BROWSABLE が設定されたアクティビティのみです。これは、アプリから安全にアプリを開けることを示しているためです。

次の場合、Chrome は特定のインテント URI に対して外部アプリを起動しません。

  • インテント URI は、入力した URL からリダイレクトされます。
  • インテント URI は、ユーザーの操作なしで開始されます。