2011-07-17 10 views
3

私はメディアプレーヤーのロック画面の交換に取り組んでいますが、1つの面で問題があります。アプリケーションを前面に持ってこないで作業を開始する

ロック画面自体は、画面がオフになるたびにメディアサービスによって起動される新しいアクティビティです。問題は、アクティビティがアプリケーションのコンテキストを使用して起動するため、ユーザーがロックを解除した後にアプリが前面に表示されることです。

サービスコンテキストを使用してアクティビティを開始しようとしましたが、サービス自体がアプリケーションにリンクされているため、これは機能しません。

以下

はアクティビティを起動するサービスのコードです:

Intent mLock = new Intent(context, LockScreen.class); 
    mLock.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(mLock); 

誰もが、私はこの活動を起動し、バックグラウンドで私のアプリを保つことができる方法上の任意の提案を持っていますか?

答えて

2

多くの検索の後、私はFLAG_ACTIVITY_MULTIPLE_TASKを追加して、私が望む結果を得ることができました。これにより、親アプリケーションをフロントに移動させることなく、ロックアクティビティーを開始および終了することができます。

私はこの解決策を引き続きテストし、見つけた欠点を投稿します。他の誰かがこの気持ちでチャイムしたいと思っているなら、...私はこの旗が過去に批評を引き出していることを知っています。

おかげで、 ジョシュ

+1

ジョシュ、それはちょっと古いポストだとは思いますが、最終的なコードを共有してもらえますか?あなたはアプリコンテキストなしであなたの活動を始めましたか?それともFLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NEW_TASKですか? – MegaAppBear

0

ご質問について少し不明です。しかし、私はそれが正しいことを願っています。

ロックアクティビティをアクティブにしたい場合、ロックが解除されている場合は、ロックアクティビティが呼び出される前に実行されていたアクティビティ(アクティビティX)を表示したくない場合は、ロックアクティビティを呼び出します。

ロックアクティビティがアクティブであってもXが実行され、ロックされていないときは閉じられるようにするには、フラグを使用します。ロックが解除されるとフラグをセットし、Xがこのフラグの状態を定期的にチェックするようにします。

希望私はあなたを助けてくれました。

+0

ありがとうございます。私がしたいのは、ロック解除後に画面が一番上に動いたときに、どんなアクティビティが上にあっても保持することです。これが自分のメディアプレーヤーか他のアプリかどうか。今すぐロックアクティビティが始まると、ロック解除アクティビティは常に私のアプリをトップに引き出します – Josh

+0

あなたがそれを解決していない場合は、いくつかのコードを投稿してください。それは助けることができるかもしれません! –

+0

私はあなたのソリューションを使って解決していませんが、それはうまくいかないとは限りません。可能であれば、私のアプリケーションのコンテキストを使わずにアクティビティーを開始する方法を見つけたいと思います。 – Josh

3

マニフェストセットでは、ロック画面のタスク親和性。それはFLAG_ACTIVITY_MULTIPLE_TASKを使わずにあなたを並べ替えるべきです。

+0

これはいくつかのケースで(ユーザーがホームボタンを押す)機能しますが、他の領域では失敗します。私はfinish()を呼び出すメソッドを持っています。これはまだ私の主なアプリケーションを前面に引き出しています。マニフェスト内のアクティビティにandroid:taskAffinity = ""を追加して適用しました。 – Josh

+0

これをチェックしてください!間違ったアクティビティにコールアウトを追加しました。なぜこれがフラグを使用するよりも優れた解決策であるか説明できますか? – Josh

+0

SDKのドキュメントがFLAG_ACTIVITY_MULTIPLE_TASKに対してアドバイスしているためです。他の結果がある場合に備えて、私はそれを使用するのが緊張しています。 –

関連する問題