package com.java.wjd;import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.view.Gravity;
import android.widget.Toast;public class ToastActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new SMSReceive();
    }
    
    public class SMSReceive extends BroadcastReceiver{ public void onReceive(Context arg0, Intent intent) {

Bundle bundle = intent.getExtras();
Object messages[] = (Object[])bundle.get("pdus");
SmsMessage smsmessage[] = new SmsMessage[messages.length];
for(int n = 0; n < messages.length; n++){
smsmessage[n] = SmsMessage.createFromPdu((byte[])messages[n]);
}
Toast toast = Toast.makeText(ToastActivity.this,"短信内容:"+smsmessage[0].getMessageBody(),Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP|Gravity.LEFT,100,200);
toast.show();
}
    }
    
}
为什么我给模拟机发送短信,没有出现提示啊,我已经注册服务了

解决方案 »

  1.   


    09-27 09:53:54.240: WARN/dalvikvm(218): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    09-27 09:53:54.240: ERROR/AndroidRuntime(218): Uncaught handler: thread main exiting due to uncaught exception
    09-27 09:53:54.280: ERROR/AndroidRuntime(218): java.lang.RuntimeException: Unable to instantiate receiver com.java.wjd.SMSReceiver: java.lang.ClassNotFoundException: com.java.wjd.SMSReceiver in loader dalvik.system.PathClassLoader@44c06758
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2616)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.app.ActivityThread.access$3100(ActivityThread.java:119)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.os.Handler.dispatchMessage(Handler.java:99)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.os.Looper.loop(Looper.java:123)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at java.lang.reflect.Method.invokeNative(Native Method)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at java.lang.reflect.Method.invoke(Method.java:521)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at dalvik.system.NativeStart.main(Native Method)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218): Caused by: java.lang.ClassNotFoundException: com.java.wjd.SMSReceiver in loader dalvik.system.PathClassLoader@44c06758
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2609)
    09-27 09:53:54.280: ERROR/AndroidRuntime(218):     ... 10 more
      

  2.   

    你没有注册你的广播吧?用代码或manifest.xml里
      

  3.   

    我注册了
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.java.wjd"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".ToastActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    <receiver android:name=".SMSReceiver" android:enabled="true" >
    <intent-filter >
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
    </intent-filter>
    </receiver>
        </application>
    </manifest>
      

  4.   

    SMSReceive 类放到另外一个文件里.一个java文件不能有两个public的类.