2010-09-01 56 views
1
​​
package com.broadcastreceiver; 

import java.util.ArrayList; 
import android.appwidget.AppWidgetManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class ExampleBroadCastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     // TODO Auto-generated method stub 

     Log.d("ExmampleBroadcastReceiver", "intent=" + intent); 
     Intent intent1 = new Intent(context,Login.class); 
     context.startActivity(intent1); 
    } 
} 

不工作我運行這個上面的代碼更改時區設置中沒有要求其他活動。有人可以告訴問題是什麼嗎?時區例如,在模擬器

回答

0

我想你沒有在你的AndroidManifext.xml中包括以下幾行,是嗎?

<receiver android:name=".ExampleBroadcastReceiver" android:enabled="false"> 
    <intent-filter> 
     <action android:name="android.intent.ACTION_TIMEZONE_CHANGED" /> 
     <action android:name="android.intent.ACTION_TIME" /> 
    </intent-filter> 
</receiver> 
+0

是的,我寫了這個代碼 – mohan 2010-09-06 07:15:02

1

這是不工作,因爲意圖是錯誤的。用上面的替換:

<intent-filter> 
    <action android:name="android.intent.action.TIMEZONE_CHANGED" /> 
    <action android:name="android.intent.action.TIME" /> 
</intent-filter> 

然後轉到設置區域並更改時區。

+0

我不認爲這是正確的.. 。我沒有在文檔中看到任何名爲「android.intent.action.TIME」的意圖。你能否提供參考? – greg7gkb 2012-01-03 19:21:38

3

我有同樣的問題,這個線程幫助我得到TimeZone更新工作,但我仍然沒有得到日期/時間變化的通知。我終於發現,您在清單文件中指定的內容與廣播接收器在過濾意圖時使用的內容有所不同。雖然它在Android Intent參考中有記錄,但很容易忽略!

在你的AndroidManifest.xml文件,使用以下命令:

<receiver android:name=".MyReceiver"> 
    <intent-filter> 
     <!-- NOTE: action.TIME_SET maps to an Intent.TIME_CHANGED broadcast message --> 
     <action android:name="android.intent.action.TIME_SET" /> 
     <action android:name="android.intent.action.TIMEZONE_CHANGED" /> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
    </receiver> 

而在你的接收機類:

public class MyReceiver extends BroadcastReceiver { 
    private static final String TAG = "MyReceiver"; 
    private static boolean DEBUG = true; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    final String PROC = "onReceive"; 

    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
     if (DEBUG) { Log.v(TAG, PROC + ": ACTION_BOOT_COMPLETED received"); } 
    } 
    // NOTE: this was triggered by action.TIME_SET in the manifest file! 
    else if (intent.getAction().equals(Intent.ACTION_TIME_CHANGED)) { 
     if (DEBUG) { Log.v(TAG, PROC + ": ACTION_TIME_CHANGED received"); } 
    } 
    else if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) { 
     if (DEBUG) { Log.v(TAG, PROC + ": ACTION_TIMEZONE_CHANGED received"); } 
    } 
    } 

}