2016-07-30 11 views
0

私はまずアプリを説明します。私のアプリは、バックグラウンドで実行されているサービスで構成されています。このサービスは、特定のアプリが開かれるのを待っています(私の場合は気に入っています)。アプリ起動時に他のアプリにフローティングアクティビティを描画

Spotifyが開くたびに、このポップアップをボタンとテキストで表示する必要があります。 imgur.com/QHWZpu6

私はすでにDialogFragmentを試していますが、サービスクラスにFragmentManagerがないので動作しません。

皆さんお気軽にお問い合わせください。前もって感謝します!

+0

の通知を検討する必要がありますようですリソースファイル内のダイアログとしてのあなたのアクティビティをダイアログとして表示します。最新のデバイスではログメソッドが機能しないため、アプリの起動を検出できません。 –

+0

小さな透明なウィンドウの使用はどうですか? –

答えて

0

アプリケーションは

を発足/実行されている場合は検出はあなたが関係している方法はActivityManager.RunningAppProcessInfo()あるActivityManager

を見てみましょう。現在実行中のアプリケーションのパッケージ名をリストとして返します。あなたがしなければならないことは、リストを繰り返して、それがあなたのケースでは気づいているアプリパッケージと一致するかどうかをチェックすることです。

ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
List<RunningAppProcessInfo> appInfos = activityManager.getRunningAppProcesses(); 
for(int i = 0; i < appInfos.size(); i++) 
{ 
    if(appInfos.get(i).processName.equals("package name")) 
    { 
     //USE INTENT TO START YOUR ACTIVITY AS EXPLAINED BELOW 
    } 
} 

サービス

からスタート活動次のように意図を使用し、あなたのサービスから活動を開始するには:

Intent popUpIntent = new Intent(this, MyActivity.class); 
popUpIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(popUpIntent); 

ポップアップアクティビティ/表示ダイアログ

としてあなたのアクティビティを表示するためにはダイアログとして、マニフェストファイルの "Theme.Dialog"にアクティビティテーマを設定するだけです

<activity 
    ... 
android:theme="@android:style/Theme.Dialog" 
    ... 
    /> 

アクティビティクラス内でsetTheme()を呼び出すことで、アクティビティ内のテーマを動的に設定できます。

setTheme(android.R.style.Theme_Dialog); 
+0

詳細なコメントをいただきありがとうございます!私があなたに与えた例のようにTheme_Dialogを実際に作ることができますか? – Robbertie

+0

@Robbertieあなたのダイアログアクティビティを何かのように見せることができます。通常のアクティビティのように動作し、レイアウトファイルでデザインするように見えます。 –

+0

ありがとう、多くの男、その作業。唯一のことは、現在のアプリをバックグラウンドとして保持しないことですが、それは主なアクティビティになります。だから、バックグラウンドで見分けるのではなく、それは私のアプリレイアウトを持っている.. – Robbertie

0

サービスクラスはUIスレッドとやりとりする必要がありません。これを達成するための簡単なやりとりは、サービススレッドを使用してSharedPreferencesに格納されているものを更新し、UI表示を処理するアクティビティのUIスレッドの共有設定変更リスナーを設定することです。その画像に基づいて

void onSharedPreferenceChanged (SharedPreferences sharedPreferences, 
       String key) 

、あなたが実際にあなたが活動は、現在アクティブなアプリケーションではありませんしているときのUI要素を表示したい、あなたはあなたが宣言することができ、この代わりに

+0

あなたは私が知る限り、サービスでインテントを呼び出すことができます。 –

関連する問題