Android BroadcastReceiver并启动一个意图

问题描述:

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"); 
     } 
    } 
} 

当屏幕打开时,我正在检查用户是否已关闭超过15分钟,如果是,请注销他。并去LonIn屏幕。 我要开始的意图时,我称之为handleLogout()(标记*这里* *) 我可以做的是,当类扩展广播接收器?如果不是,我还能做什么?Android BroadcastReceiver并启动一个意图

是的,你可以做到这一点。创建Intent时,只需使用传递给onRecieve函数的上下文。一旦你有意图,拨打电话:

Context.startActivity(yourIntent); 
+0

我做了....我意向=新意图(背景下,LogIn.class); startActivity(ⅰ);这是说创建方法startActivity(意图) – user533844

+0

修改答案来解决您的问题 –

+0

它的工作!谢谢!!! – user533844

你当然可以。尝试

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

如果您想在handleLogout方法中执行此操作,请传递上下文。

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

这是现在的下一步。感谢回复。 – user533844

你需要记住intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); (E)/ AndroidRuntime(2339):java.lang.RuntimeException:无法启动接收器android.util.AndroidRuntimeException:从Activity的外部调用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); 
    ); 
} 

}

感谢大家谁写在这里有用信息