如何在其他活动之上获取Android消息通知对话框?
我正在寻找这个问题的解决方案,但仍然没有得到解决方案。现在,我正在开发一个社交网络应用程序,我需要在用户从另一个人那里收到一些消息时显示一个通知消息对话框,并实现我已经使用了广播接收器并且它工作正常。
问题是如何在另一个应用程序之上显示通知对话框。
答案 0 :(得分:4)
是的,有可能。 Main.xml布局有一个编辑文本和按钮。 Messagebox布局有一个按钮。在这里,您可以将消息布局更改为您想要的任何内容。
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文件中添加以下两行:
<receiver android:name="MyScheduledReceiver"></receiver>
<activity android:name="MessageBox" android:theme="@style/Theme.Transparent"></activity>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
答案 1 :(得分:3)
正如其他人在回复中所说的那样,不鼓励在后台启动活动以引起用户的注意。但是,有些情况需要这样做; Android中的示例包括时钟闹钟,来电和低电量警报。
在Gingerbread中,fullScreenIntent字段已添加到Notification对象中;这是发布通知的标准且方便的方式,该通知还启动了一个活动以真正引起用户的注意。从Gingerbread开始,我上面列出的平台组件(警报等)都使用这种技术来显示他们的警报。这是推荐的方式来做你想要的。
答案 2 :(得分:2)