我在BroadcastReceiver中遇到ClassNotFound异常

时间:2012-03-07 05:59:06

标签: android android-intent broadcastreceiver

我正在尝试使用这个非常简单的ServiceBroadcastReceiver,但我得到了一个  ClassNotFound例外。如果我不使用startService事情很好,那么接收器就会出现问题。我已经在android清单文件中注册了它,为什么我得到ClassNotFound例外?

我将使用这种通信方法来轮询php文件并更新ListView。这是适当的沟通方式(广播意图)吗?

public class MessengerServiceActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startService(new Intent(this,MessengerService.class));

}

class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle b=intent.getExtras();
        if(b==null)
            return;

        String msg=b.getString("message");
        TextView tv=(TextView) findViewById(R.id.textView1);
        tv.setText(msg);
    }

    }
}

public class MessengerService extends Service {


    HttpClient hc;
    HttpPost hp;
    String s[]={"pratik","harsha","dayal","hritika"};


    public MessengerService() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        hc=new DefaultHttpClient();
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Thread t=new Thread(new Runnable(){

            public void run()
            {
                    int k=0;
                while(true)
                {   
                    Intent i=new Intent("com.pdd.messenger.MyAction");
                    i.putExtra("message",s[k]);
                    sendBroadcast(i);
                        try 
                        {
                            Thread.sleep(3000);
                        } 

                        catch (InterruptedException e) 
                        {


      Toast.makeText(getApplicationContext(), e.getLocalizedMessage(), Toast.LENGTH_LONG)
                                     .show();
                        }
                    k=(k+1)%4;
                }
            }

        });
        t.start();



        return super.onStartCommand(intent, flags, startId);
    }

}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pdd.messenger"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MessengerServiceActivity"
        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=".MyReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="com.pdd.messenger.MyAction"/>
        </intent-filter>
    </receiver>

    <service android:name=".MessengerService"></service>
</application>

</manifest>

0 个答案:

没有答案