接收短信通知然后进行处理的程序,总是报错,求助!!

sungoku 发布于 2012/09/28 10:28
阅读 425
收藏 1
新手学习android开发,想写一个接收短信的程序,在收到短信之后进行一些处理,查看了一些教程,貌似在短信接收里面不能操作界面组件,于是我就想通过handler来发送一个消息,通知Activity进行操作,代码片段如下:
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
public class MainActivity extends Activity {
 
    SMS_Receiver smsReceiver = null ;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         Handler handler = new Handler(){
                public void handleMessage(android.os.Message msg) {
                            if (msg.what == 1001 )
                                    ShowInfo(smsReceiver.getData());
                }
         };
         smsReceiver = new SMS_Receiver(handler);
    }
//其他无关紧要的代码省略
}


?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class SMS_Receiver extends BroadcastReceiver {
        Double data = 0.0 ;
        Handler smshandler = null ;
        public SMS_Receiver(Handler handler) {
                // TODO 自动生成的构造函数存根
                smshandler = handler;
        }
 
        @Override
        public void onReceive(Context context, Intent intent) {
                // TODO 自动生成的方法存根
                System.out.println( "收到短信" );
                if (intent.getAction().equals( "android.provider.Telephony.SMS_RECEIVED" )){
                        Object[] pdus=(Object[])intent.getExtras().get( "pdus" );
                        SmsMessage[] message= new SmsMessage[pdus.length];
for ( int i= 0 ;i<pdus.length;i++){
                                message<i>=SmsMessage.createFromPdu(( byte [])pdus<i>);
                                strText = message<i>.getDisplayMessageBody();
                                data = Double.parseDouble(strText);
                                abortBroadcast(); //停止广播的继续传播,阻止系统出现短信提示。
                                Message msg = new Message();
                                msg.what = 1001 ;
                                smshandler.sendMessage(msg);
                        }       
                }
        }
 
        public Double getData() {
                // TODO 自动生成的方法存根
                return data;
        }
 
}</i></i></i>


Manifest.xml代码如下:
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
< manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    package = "yfz.wanglei.spytestclient"
    android:versionCode = "1"
    android:versionName = "1.0" >
 
    < uses-sdk
         android:minSdkVersion = "8"
         android:targetSdkVersion = "15" />
< uses-permission android:name = "android.permission.RECEIVE_SMS" />
 
    < application
         android:icon = "@drawable/ic_launcher"
         android:label = "@string/app_name"
         android:theme = "@style/AppTheme" >
 
         < activity
             android:name = ".MainActivity"
             android:label = "@string/title_activity_main" >
             < intent-filter >
                < action android:name = "android.intent.action.MAIN" />
 
                < category android:name = "android.intent.category.LAUNCHER" />
             </ intent-filter >
         </ activity >
  
         < receiver android:name = ".SMS_Receiver" >
                < intent-filter android:priority = "1000" >
                        < action android:name = "android.provider.Telephony.SMS_RECEIVED" />
                </ intent-filter >
         </ receiver >
 
    </ application >
 
</ manifest >


问题是,运行之后,程序一接收到短信(短信内容就是一个小数)就会报错,神马 java.lang.InstantiationException:xxxxxx.SMS_Receiver之类的错误。
卡在这里两天了,郁闷无比,希望有高手解救。万分之感谢!!!
加载中
0
雨焰
雨焰
你的handler 应该写在你的广播里面吧,然通过handler跳转到activity中进行处理!
雨焰
雨焰
回复 @sungoku : 你是接受短信还要处理短信的话,将数据给Intent,然后调整,如果不处理短信的话,在handler中直接Intent跳转!清楚吗?
sungoku
sungoku
如果把Handler写在广播接收里面的话,如何才能跳转到Activity里面处理呢?能否具体一点。我不太清楚这样的做法。
0
雨焰
雨焰
 你是接受短信还要处理短信的话,将数据给Intent,然后跳转,如果不处理短信的话,在handler中直接Intent跳转!清楚吗?
0
雨焰
雨焰
我觉得用handler 复杂了,你可以将数据 直接 给Intent,然后跳转!
0
sungoku
sungoku

就是不会跳转。。。我晕。

startActivity()吗?

 

返回顶部
顶部