【问题标题】:How to add AlertDialog in broadcast receiver class in android?如何在android的广播接收器类中添加AlertDialog?
【发布时间】:2012-04-21 19:02:44
【问题描述】:

我正在开发一个短信应用程序。这样,一旦 SMS 进入收件箱,它就会显示一些警报。 我想在以下代码中添加警报。有可能吗?

public class SMSReceiver extends BroadcastReceiver
{
        @Override
        public void onReceive(Context context, Intent intent)
        {
                Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;

        if(null != bundle)
        {

            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            byte[] data = null;

            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                


            }


        }
        }

}

【问题讨论】:

标签: android android-layout android-intent android-emulator sms


【解决方案1】:

在您的应用程序中创建一个Activity 并从您的BroadcastReceiver 启动Activity

现在在ActivityonCreate 方法中启动AlertDialog

res/values 文件夹中创建 style.xml 并将其放入其中

<style name="Theme.Transparent" parent="android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">#000000</item>
        <item name="android:windowNoTitle">true</item>

    </style>

通过将android:theme="@style/Theme.Transparent" 作为Activity 的属性放入您的AndroidManifest.xml 文件中,使Activty 透明,这样只会显示AlertDialog

【讨论】:

  • 即使应用程序不在前台运行也会显示此警报吗?
  • 是的,它将被显示。每当您从 BroadcastReceiver 开始您的活动时。如果你在ActivityonCreate()方法中编写AlertDialog的代码,从BroadcastReceiver开始
  • 好的。是否可以使用模拟器检查应用程序的接收部分(应用程序有端口号)?
  • 如果您使用BroadcastReceiver接收短信,您可以使用DDMS发送短信到模拟器,检查应用的接收部分。
  • 是的,我正在使用 BroadcastReceiver 来接收消息。但是消息应该到达应用程序收件箱(即特定端口)而不是本机收件箱。可以在模拟器中检查吗?
【解决方案2】:

据我了解,您无法从广播接收器启动活动。如果是这种情况,这将对您有所帮助:

  Intent i=new Intent(context,ActivityName.class);
    startActivity(i);

和“如何显示 AlertDialog”,遵循 Ravi 的回答是你能做的最好的事情。

【讨论】:

    【解决方案3】:

    调用新的活动集对话框主题并从广播接收器的onReceive方法调用..

    【讨论】:

      【解决方案4】:

      您应该使用通知管理器: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

      具体谷歌说(他们的重点):

      后台服务不应自行启动活动以接收用户交互。该服务应该创建一个状态栏通知,当用户选择该活动时,该通知将启动。

      您说的是广播接收器而不是服务,但我怀疑它仍然适用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多