如何在android中的广播接收器类中添加AlertDialog?

时间:2012-04-09 11:42:07

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

我正在开发一个短信应用程序。一旦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]);                


            }


        }
        }

}

4 个答案:

答案 0 :(得分:3)

在您的应用中创建Activity,然后从Activity

开始BroadcastReceiver

现在在AlertDialog

onCreate方法中启动Activity

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

<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>

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

谷歌特别说(他们的重点):

  

后台服务永远不应自行启动活动以接收用户互动。相反,该服务应创建状态栏通知,以便在用户选择时启动活动。

您正在谈论BroadcastReceiver而不是服务,但我怀疑它仍然适用。