【发布时间】:2015-01-07 16:22:15
【问题描述】:
我为 SMS 创建了一个 BroadCastReceiver,我希望它仅在应用程序运行时工作(在前台或后台)。我当前使用的代码是:
public class BroadCastReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
ActivityManager am = (ActivityManager) context
.getSystemService(Activity.ACTIVITY_SERVICE);
String packageName = am.getRunningTasks(1).get(0).topActivity
.getPackageName();
if(packageName.contains("com.example.sms") )
{
abortBroadcast();
}else
{
}
}
}
但问题是这段代码只能在前台工作,所以当用户点击返回按钮或主页按钮时,应用程序将在后台工作,但 BroadCastReceiver 将无法工作。那么有什么方法可以解决这个问题吗??在此先感谢(&)
【问题讨论】:
-
getRunningTasks 自 Lollipop 以来已被弃用。它只会返回您自己的应用程序的任务。此外,它从一开始就从未打算用于生产代码。
-
我知道,但我还没有找到任何替代品。我目前正在尝试使用 RunningAppProcessInfo 。这也只能用于调试,但我认为在这种情况下我别无选择。
-
等等。我认为您发布的代码与您在第一句话中所说的不一致。您希望广播仅在您的应用运行时运行还是在另一个应用运行时运行?
-
仅当我的APP运行时。
标签: android