他のアクティビティの上にAndroidのメッセージ通知ダイアログ

他のアクティビティの上にAndroidのメッセージ通知ダイアログを表示するにはどうすればよいですか?

私はこの問題の解決策を探していますが、解決策はまだありません。今、私は、ユーザーが別のメッセージを受け取ったときに通知メッセージのダイアログを表示し、放送受信機を使用して正常に動作していることを確認するソーシャルネットワーキングアプリを開発しています。

問題は、別のアプリケーションの上に通知ダイアログを表示する方法です。

0
あなたは本当にこのようなものを構築しようとすべきではありません。私の携帯電話で何か他のことをやっている間に、アプリが私を妨害しようとするなら、本当に迷惑になるだろう。 Androidは、認識されるほど顕著な通知システムを構築していますが、ユーザーはいつ対処するかを決めることができます。それを使用してください。
追加された 著者 Till Helge,
私はあなたのためにコードを追加しました。
追加された 著者 Ramesh Akula,
私の要求はそれであり、anyはそれを行う方法をアドバイスします。
追加された 著者 Dinash,

3 答え

はい、可能です。 Main.xmlレイアウトには、1つの編集テキストとボタンがあります。 Messageboxレイアウトには1つのボタンがあります。メッセージのレイアウトを自由に変更することができます。

ファイルMyScheduledReceiver.java:

public class MyScheduledReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
       //TODO Auto-generated method stub

        Intent scheduledIntent = new Intent(context, MessageBox.class);
        scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(scheduledIntent);
    }
}

主な活動:

public class AndroidMessageBoxActivity extends Activity implements OnClickListener
{
    private EditText time;
    private Button btn;
    private AlarmManager alarm;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        time = (EditText) findViewById(R.id.editText1);
        btn = (Button) findViewById(R.id.button1);
        alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
       //TODO Auto-generated method stub
        int x = Integer.parseInt(time.getText().toString());

        Intent intent = new Intent(this, MyScheduledReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);

        alarm.set(AlarmManager.RTC_WAKEUP,
                  System.currentTimeMillis() + (x * 1000),
                  pendingIntent);
        Toast.makeText(this,
                       "Alarm set in " + x + " seconds",
                       Toast.LENGTH_LONG).show();
    }
}

メッセージボックス:

public class MessageBox extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.messagebox);

        Button btn = (Button) findViewById(R.id.Ok);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
               //TODO Auto-generated method stub
                finish();
            }
        });
    }
}

AndroidマニフェストXMLファイルに次の2行を追加します:




Filestyle.xml:


    

4
追加された
この例は非常に役に立ちました。私はあなたの "ダイアログ"を他のアプリケーションが現在動作しているものの上に表示したい場合、マニフェストでlaunchMode = "singleTask"を設定するか、次のようにコードで行うことができます: Intent scheduledIntent =新しいインテント(context、AlertAlarmActivity.class); scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)‌; context.startActivity(scheduledIntent); もちろん、Launch Modeを変更したり、他のアプリケーションの上に描画したりすることの結果に注意してください!
追加された 著者 user1445967,
みなさんありがとうございます。
追加された 著者 AB1209,
私は同じ方法で実装していますが、この場合、私は自分のアプリケーションにログインし、私は自分のアプリケーションのホームページにいます。そして、ホームボタンを押してから、ギャラリーのような他のアプリを起動します。私の通知アクティビティが開始されている場合ギャラリーを表示すると、私は私のアプリケーションのホームページに移動されますが、上記の私は私が必要とするメッセージ通知を持っている、私は表示される通知活動だけを必要とし、すでに使用しているギャラリーです。私はあなたが私が言ったことを理解したと思う...
追加された 著者 Dinash,
+1は、答えのために、最終的にマニフェストファイルのダイアログアクティビティに "taskAffinity"プロパティを追加することで解決を得ました。
追加された 著者 Dinash,

他の人が彼らの反応で言ったように、ユーザの注意を引くためにバックグラウンドからアクティビティを起動することはお勧めできません。しかし、状況によってはこれが必要な場合もあります。 Android自体の例には、時計アラーム、着信コール、バッテリ低下アラートなどがあります。

ジンジャーブレッドでは、通知オブジェクトに fullScreenIntent フィールドが追加されました。これは通知を投稿するための標準的で便利な方法で、実際にユーザーの注目を集めるためのアクティビティも起動します。ジンジャーブレッドの上で、私が上に列挙したプラットフォームコンポーネント(アラームなど)はすべて、このテクニックを使用してアラートを表示します。これはあなたが求めていることを行うための推奨された方法です。

3
追加された

ステータスバーの通知に記載されているとおり、

バックグラウンドサービスは、ユーザーとのやりとりを受けるために単独でアクティビティを開始することはありません。

したがって、私はそれをすることを強くお勧めしますが、代わりにステータスバーの通知を使用する必要があります。

2
追加された