1

我正在开发一个短信应用程序。这样,一旦 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

4 回答 4

3

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

现在AlertDialogonCreate方法内启动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"ActivityAndroidManifest.xmlAlertDialog

于 2012-04-09T11:54:49.743 回答
1

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

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

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

于 2012-04-09T12:17:32.570 回答
0

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

于 2012-04-09T12:23:43.860 回答
0

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

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

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

您说的是 BroadcastReceiver 而不是服务,但我怀疑它仍然适用。

于 2012-04-18T10:10:00.227 回答