代码之家  ›  专栏  ›  技术社区  ›  Joey

是否可以在AppWidget上接收短信?

  •  1
  • Joey  · 技术社区  · 16 年前

    是否可以在AppWidget上接收短信?

    我看到了Android示例源(API演示)。

    在API演示中, 示例AppWidgetProvider 类扩展 应用程序小工具提供程序 不是 活动 .

    所以,我想像这样注册短信接收器是不可能的,

    rcvIncoming = new BroadcastReceiver() {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("telephony", "SMS received");
            Bundle data = intent.getExtras();
            if (data != null) {
                // SMS uses a data format known as a PDU
                Object pdus[] = (Object[]) data.get("pdus");
                String message = "New message:\n";
                String sender = null;
                for (Object pdu : pdus) {
                    SmsMessage part = SmsMessage.createFromPdu((byte[])pdu);
                    message += part.getDisplayMessageBody();
                    if (sender == null) {
                        sender = part.getDisplayOriginatingAddress();
                    }
                }
    
                Log.i(sender, message);
    
            }
        }
    };
    
    registerReceiver(rcvIncoming, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
    

    我的目标是在我的自定义应用程序小部件上接收短信。

    任何帮助都将不胜感激!!

    1 回复  |  直到 16 年前
        1
  •  1
  •   Patrick Tsai    16 年前

    AppWidgetProvider是BroadcastReceiver的派生类。因此,可以重写onReceive()来处理SMS消息。当然,您必须先为清单中正确接收的短消息设置意向过滤器。