2

Eclipse ウィザードから基本的な Android アプリを作成しました。次に、既存のインテント フィルタの後に、次のインテント フィルタをAndroidManifest.xmlに追加しました。これにより、カスタムの「sample://」URL スキームがサポートされます。

<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="sample" />
</intent-filter>

Chrome またはデフォルトのブラウザを実行して「sample://」リンクをクリックすると、アプリが起動します。しかし、タスク スイッチャーを見ると、自分のアプリが表示されていません。代わりに、アプリのスクリーン ショットと共に Chrome が表示されます。

どうしてこれなの?修正できますか?Galaxy Nexus 電話で Android 4.2.2 を実行しています。

android:launchMode="singleInstance"アクティビティに追加すると、別のアプリで開くことに気付きました。しかし、ドキュメントによると、これは「一般的な使用にはお勧めできません」。なぜだめですか?

4

1 に答える 1

7

アクティビティが [最近のアプリ] に Chrome として表示されるのは、Chrome タスクに属し、そこから起動されたためです。

お気づきのようにandroid:launchMode="singleInstance"、問題は解決しますが、ユーザー エクスペリエンスとナビゲーション、およびユーザーがアプリケーションの動作を期待する方法が損なわれるため、お勧めできません。

幸いなことに、でインテント フラグを指定する方法があると思います。次のようにしてHREFみてください。

<A HREF="intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.example.package/.MyActivity;end" />

前の例ではlaunchFlags=FLAG_ACTIVITY_NEW_TASK. このフラグは通常、「ランチャー」スタイルの動作を提示したいアクティビティで使用されます。これらのアクティビティは、実行できる個別のリストをユーザーに提供します。それ以外の場合は、それらを起動するアクティビティとは完全に独立して実行されます。

于 2013-07-19T00:15:27.360 に答える