2012-03-07 4 views
0

このようなアプリケーションワイドタスクを処理する拡張アプリケーションファイルに隠れているアラームマネージャメソッドを起動するために、これは、私がアクティビティから呼び出すときにうまく動作しますが、ブロードキャストレシーバーから呼び出すときにクラッシュし、うまく動作しません。私は何らかの考え方をしているので、何らかの方法でコンテキストを追加する必要がありますか?ここAndroidブロードキャストレシーバが拡張アプリケーションでヌルポインタ例外を返す

は私のコードです:

package com.testapp21.second.activities; 

import com.testapp21.second.OTweetApplication; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class PhoneOnReceiver extends BroadcastReceiver { 
private OTweetApplication app; 

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

     app.startChecks(); 

} 

}

編集:ここstartCheckshelper(と呼ばれるヘルパーファイル内のメソッドへのオフ、その後startChecks代表者)は、コードのブロックは、この次のようになります。

public void startCheckshelper(){ 
    mAlarmSender = PendingIntent.getService(context, 
       0, new Intent(context, CheckerService.class), 0); 

    // We want the alarm to go off 30 seconds from now. 
     long firstTime = SystemClock.elapsedRealtime(); 

     // Schedule the alarm! 
     AlarmManager am = (AlarmManager)context.getSystemService(Service.ALARM_SERVICE); 
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
         firstTime, 60*1000, mAlarmSender);  
} 
+0

startChecks()でクラッシュしますか?私は、私が思うようにもっと多くの情報を知る必要があります。 – davehale23

+0

拡張アプリケーションから実行するメソッドにIveが追加されました –

答えて

1

Androidでのクラッシュについて質問するときにスタックトレースを投稿する必要がありますが、appは決して初期ではありませんあなたはonReceiveでそれを使用します。

+0

何かの例として、アプリケーションを初期化する必要がありますか? –

+0

それはあなたの拡張アプリケーションであると仮定します: 'app =(OTweetApplication)getApplicationContext();' – kabuko

1

それはヌルですのであなたは、appに何かを割り当て/初期化されていない:

private OTweetApplication app; 

そして、あなたはあなたが例外を取得(app.startChecks();)と呼んでいます。

+0

私は何かの例を私はアプリケーションを初期化する必要がありますか? –

+0

正直言ってわかりません - 前にOTweetApplicationで仕事をしたことはありません。 – MByD