2017-06-15 6 views
0

現在、複数のアクティビティで構成されるアプリがありますが、そのうちの1つは半透明です。アプリには通知があり、それをタップすると、現在画面上にあるものの上に半透明のアクティビティを開くようにしたい。現在のところ、これは私のアプリケーションが閉じている場合に動作しますが、実行中でオーバーレイアクティビティが開いた場合、残りのアプリケーションもフォアグラウンドになります。私は、オーバーレイだけがそこにあるようにしたいと思います。ユーザーが押し戻すと、元のアプリに戻ります。アプリの残りの部分を表示せずにオーバーレイアクティビティを起動する

この似顔絵はgoogle chromeのタブの活動です。私は現在、PendingIntentを通じて私の活動を開始しています

val intent = Intent(context, WebOverlayActivity::class.java) 
//intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or PendingIntent.FLAG_ONE_SHOT) 
intent.putExtra(ARG_URL, ...) 
intent.action = System.currentTimeMillis().toString() //dummy action 
val bundle = ActivityOptionsCompat.makeCustomAnimation(context, R.anim.slide_in_right, R.anim.slide_out_right).toBundle() 
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT, bundle) 

これらのフラグは、私が他の場所で活動を開始したときに、私が持っているものですが、彼らは、この保留中の意図に影響を与えていないように見えます。前述したように、このアクティビティは半透明で、他のアクティビティを引き出します。

私はこのアクティビティを他のアプリケーションタスクと分けているような気がしますが、アプリ内でオーバーレイを使用していて、それが何かに影響するかどうかはわかりません。

アイデア?

編集1:ここでは私が最終的に実行可能な解決策を見つけた

<activity 
    android:name=".WebOverlayActivity" 
    android:theme="@style/AppTheme.Overlay"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <!--other data sources--> 
    </intent-filter> 
</activity> 
+0

質問に自分のアクティビティマニフェストを追加しました –

答えて

0

マニフェスト活動です。 目標は新しいタスクでアクティビティを開始することです。そのため、アクティビティマニフェストにandroid:launchMode="singleInstance"を追加しました。私が気にしたことは、taskAffinityも指定する必要があるということでした。そうしないと、launchModeは無視されます。

オーバーレイを効果的に使用して、他のアプリでURLを読み込んで元に戻したり、自分のアプリから使用したり、他のアクティビティと同じように動作させることができます。

関連する問題