gpt4 book ai didi

应用程序进入后台时Android自动注销

转载 作者:可可西里 更新时间:2023-11-01 19:05:46 25 4
gpt4 key购买 nike

我想检测我的应用程序何时发送到后台。关于 Hook HOME 键有很多问题 - 我知道这只有通过注册为启动器应用程序才有可能。

...但是...像往常一样,总有一个客户想要某些行为...

我们有一个对安全性要求很高的应用程序。客户端希望应用程序无论何时出于任何原因进入后台(电话、HOME 键、返回上次 Activity )时从服务器注销(* *澄清一下,我的意思是当前台屏幕上的 Activity 不是我应用的 Activity 之一 **)。

那么,如果我不能 hook HOME 键,还有什么选择呢?显然只是 Hook onPause() 不会有帮助,因为那是 Activity 特定的。

我们想到的“最佳”方法是在我们的 Application 类中保留一组 Activity 引用。在每个 Activity 的 onResume() 中,我们将它添加到这个数组中。在 onPause() 中,我们将其删除。同样在 onPause() 中,我们枚举此数组以查明是否有任何已注册的 Activity 在前台。如果未发现前台 Activity ,则用户将注销。

我对此不满意,希望找到更好的方法。

最佳答案

//使用服务

//在那

@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_CALL);
filter.addAction(Intent.ACTION_ANSWER);

registerReceiver(mIntentReceiver, filter);

//然后在 BroadcastReceiver 中

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();

if(action.equalsIgnoreCase("android.intent.category.HOME") )
{
//logout logic
}
else if(action.equalsIgnoreCase("android.intent.action.SCREEN_OFF") )
{
//logout logic
}

else if(action.equalsIgnoreCase("android.intent.action.DIAL") )
{
//logout logic
}
else if(action.equalsIgnoreCase("android.intent.action.CALL")){
/ /logout logic
}
}

关于应用程序进入后台时Android自动注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8968265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com