2

ベストプラクティスではないかもしれませんが、これが私がやりたいことです。

ブロードキャストレシーバーが呼び出されたら、フルスクリーンではなく、背景が透明な新しいアクティビティを開始します。これは、現在のアクティビティ/デスクトップの壁紙の上に開きます。

私がこれまでに持っているコードは次のとおりです。

私は新しいアクティビティを作成して呼び出します:


  Intent testActivityIntent = new Intent(context, com.andy.tabletsms.work.SMSPopup.class);
                testActivityIntent.putExtra("com.andy.tabletsms.message", main.msgs.get(i));
                testActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                testActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                context.startActivity(testActivityIntent);

そして、アクティビティのテーマは次のとおりです。

android:theme = "@ android:style / Theme.Translucent.NoTitleBar"

そして、アクティビティのコードは、単純なレイアウトの単なる標準的なアクティビティです。ただし、そのブロードキャストレシーバーがアクティビティを開始すると、アプリケーションの開始時に開始された前のアクティビティの上に表示されます.....この画像のように: 代替テキスト

4

3 に答える 3

5

これは、前の質問で答えた問題に関連しています。アクティビティは、アクティビティスタックの一番上で開かれた通知から開始されました。

基本的にそれはすべてについてです:android:taskAffinityそしてandroid:launchMode

于 2011-01-07T20:00:08.277 に答える
0

あなたは今、これと同じ質問を3回行っていますが、まだ十分な情報がありません。あなたは「元の活動」について言及し続けますが、それが何であるか、どのように始めたのか、それが「戻ってくる」ようにどこに行ったのかはわかりません。

おそらく、「メイン」アクティビティを終了していないか、奇妙なフラグを持っているか、同じ意図をリッスンしている可能性があります。

また、放送受信機については何も表示しません。

于 2011-01-07T19:59:41.670 に答える
0

android:theme = "@ android:style / Theme.Translucent.NoTitleBar"を使用しないでください。android:themeをデフォルトのままにします。これは私にとってはうまくいきます

于 2012-06-07T04:42:00.500 に答える