0

「customapp://myactivity」でブラウザからカスタムアプリを呼び出しました

うまく機能しますが、アプリを起動すると. 2 つの異なるアプリのように機能します。

ブラウザは「customapp」ではなく「myactivity」だけを起動したと思います。

「myactivity」で「customapp」を起動すれば、やりたいことができると思いますが、ばかげていると思います。

この問題を解決するクールな方法はありますか?

  • 詳細な説明は以下にあります

ex) "customapp" を起動して "myactivity" を起動し、Web ブラウザから "customapp://myactivity" でカスタム アプリを呼び出し、ホーム ボタンを長押しすると、"myactivity" にいるのにアプリケーションに "customapp" が表示されます。 . 他のアプリを起動してホームボタンを長押しすると、「myactivity」が2つ出てきます。「customapp」からの 1 つと Web ブラウザーからの 1 つ。

アプリケーションのアイコンと名前は webbrowser ですが、「myactivity」があります。

下手な英語でごめんなさい。

4

2 に答える 2

-1

そのような独自のカスタムスキームを使用しないでください!!! URI スキームは、ネットワークのグローバルな名前空間です。世界中で「anton:」スキームを所有していますか? いいえ?その後、使用しないでください。

1 つのオプションは、Web サイトを持ち、その Web サイトの特定の URI にインテント フィルターを設定することです。たとえば、Market がその Web サイトで URI を傍受するために行うことは次のとおりです。

<intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data android:scheme="http" android:host="market.android.com"
                android:path="/search" />
        </intent-filter>

別の方法として、"intent:" スキームがあります。これにより、ほぼすべてのインテントを URI として記述することができ、クリックするとブラウザが起動しようとします。このようなスキームを構築するための最善の方法は、起動するインテントを構築するコードを記述し、intent.toUri(Intent.URI_INTENT_SCHEME) の結果を出力することです。

この目的でアクションを使用して、そのアクションをサポートするアクティビティを見つけることができます。ブラウザは、セキュリティ上の理由から、インテントを起動する前に自動的に BROWSABLE カテゴリをインテントに追加します。また、同じ理由で指定した明示的なコンポーネントを削除します。

アプリのみを確実に起動する場合、これを使用する最善の方法は、独自のスコープ アクションを使用し、Intent.setPackage() を使用して、Intent がアプリ パッケージのみに一致することを示すことです。

2 つの間のトレードオフ:

  • http URI では、所有しているドメインが必要です。ユーザーは常に、ブラウザーに URI を表示するオプションを取得します。アプリがインストールされていない場合、アプリが Web サイトに表示されるという非常に優れたフォールバック プロパティがあります。

  • インテント URI では、アプリが Android スマートフォンにのみインストールされている必要があります。ほとんどすべてのインテントを許可します (ただし、常に BROWSABLE カテゴリが含まれており、明示的なコンポーネントはサポートされていません)。これにより、ユーザーが代わりにブラウザーや他のアプリに移動するオプションを使用せずに、アプリのみを起動するように指示できます。

于 2013-10-10T12:27:26.867 に答える