2011-08-02 137 views
0

這是我應該根據Apress的Android的食譜書爲工作代碼:Android的廣播接收器不工作

package com.tugce.AlarmActivity; 
public class AlarmActivity extends Activity implements OnClickListener { 

    private PendingIntent mAlarmIntent; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     findViewById(R.id.start).setOnClickListener(this); 
     findViewById(R.id.stop).setOnClickListener(this); 

     Intent launchIntent = new Intent(this,AlarmReceiver.class); 
     mAlarmIntent = PendingIntent.getBroadcast(this, 0, launchIntent, 0); 
    } 

    @Override 
    public void onClick(View v) { 
     AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     long interval = 2000; 

     switch (v.getId()) { 
     case R.id.start: 
      Toast.makeText(this, "Scheduled", Toast.LENGTH_SHORT).show(); 
      manager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()+interval, interval, mAlarmIntent); 
      break; 

     case R.id.stop: 
      Toast.makeText(this, "Canceled", Toast.LENGTH_LONG).show(); 
      manager.cancel(mAlarmIntent); 
      break; 

      default: 
       break; 
     } 

    } 

    public class AlarmReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 

      Calendar now = Calendar.getInstance(); 
      DateFormat formatter = SimpleDateFormat.getDateTimeInstance(); 
      Toast.makeText(context, formatter.format(now.getTime()), 
        Toast.LENGTH_SHORT).show(); 

     } 

    } 
} 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.tugce.AlarmActivity" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="10" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 

     <receiver android:name=".AlarmReceiver"></receiver> 
     <activity android:name=".AlarmActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

我看不到屏幕上的任何時間戳。

回答

2

你的接收器是一個內部類嗎?它不應該。把它放在它自己的Java文件中。否則,Android不能實例化它。

+0

是的,謝謝斯特凡 – tugce

+0

你能接受這個答案呢? :)關心,Stéphane – Snicolas