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);
答
你当然可以。尝试
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);
);
}
}
感谢大家谁写在这里有用信息
我做了....我意向=新意图(背景下,LogIn.class); startActivity(ⅰ);这是说创建方法startActivity(意图) – user533844
修改答案来解决您的问题 –
它的工作!谢谢!!! – user533844