2011-10-24 20 views
1
public class SessionManager extends BroadcastReceiver{ 
Date timeOff; 
Date timeOn; 

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


    if("android.intent.action.SCREEN_OFF".equals(intent.getAction())) { 
     Log.i("MobileViaNetReceiver", "Screen off - start time to end session"); 
     timeOff = Calendar.getInstance().getTime(); 
    } 

    if("android.intent.action.ACTION_SHUTDOWN".equals(intent.getAction())) { 
     // DO WHATEVER YOU NEED TO DO HERE 
     Log.i("MobileViaNetReceiver", "Shut down - log off user"); 
     DbAdapter_User db = new DbAdapter_User(context); 
     db.open(); 
     db.handleLogout(); 
     db.close(); 
    } 

    if("android.intent.action.SCREEN_ON".equals(intent.getAction())) { 

     timeOn = Calendar.getInstance().getTime(); 

     long diffInMs = timeOn.getTime()-timeOff.getTime(); 

     // convert it to Minutes 
     long diffInMins = TimeUnit.MILLISECONDS.toMinutes(diffInMs); 

     if ((int) (diffInMins) > 15) { 
      //log out user 
      Log.i("MobileViaNetReceiver", "User inactive for 15 minutes - logout user"); 
      DbAdapter_User db = new DbAdapter_User(context); 
      db.open(); // ******* HERE ************* 
      db.handleLogout(); 
      db.close(); 

     } else { 
      Log.i("MobileViaNetReceiver", "User still active"); 
     } 
    } 
} 

画面がオンになったら、ユーザーがscrrenを15分以上オフにしているかどうかを確認しています。そして、LonIn画面に移動します。 私はhandleLogoutは、()(HERE ** *をマーク)することを呼び出したときの意図を開始したい 私にできるクラスはBroadcastReceiverを拡張するときに?いいえ、他に何ができますか?Android BroadcastReceiverを起動してインテントを開始する

答えて

0

はい、できます。インテントを作成するときに、onRecieve関数に渡されたコンテキストを使用するだけです。インテントを取得したら、次の電話番号に電話してください:

Context.startActivity(yourIntent); 
+0

。 startActivity(i);それはあなたの質問に対処する修正された答え – user533844

+0

メソッドを作成することを意味しているそれは働いた!ありがとう!!! –

+0

startActivity(intent) – user533844

0

もちろん可能です。試してみてください

Intent yourIntent = new Intent(context, YourActivity.class); 
startActivity(yourIntent); 

handleLogoutメソッドで実行する場合は、コンテキストを渡します。

private method handleLogout(Context context) { 
    ... 
} 
+0

これは今すぐ次のステップです。返信いただきありがとうございます。 – user533844

1

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)を覚えておく必要があります。

フォローインエラーメッセージ「E/AndroidRuntime(2339):java.lang.RuntimeException:受信者を開始できませんでした」をエンジニアに祝福と幸福android.util.AndroidRuntimeException:アクティビティの外部からstartActivity()を呼び出すコンテキストにはFLAG_ACTIVITY_NEW_TASKフラグが必要です。これは本当に必要なものですか?

public class AgeingAutoStartBroadcast extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

    Intent intent1 = new Intent(context,MyMainClass.class); 
    intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(intent1); 
    ); 
} 

}

私は....テントI =新しいテント(文脈、LogIn.class)やったここに役立つメッセージを書き込みみんなのおかげ

関連する問題