我需要打开一个新的锁定屏幕,同时打开另一个应用程序...我已经写了服务......但是我的应用程序没有工作...
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1);
ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
String activityOnTop=ar.topActivity.getClassName();
if(activityOnTop!=null)
{
Toast.makeText(this,"activityOnTop"+""+activityOnTop,Toast.LENGTH_LONG).show();
{
Intent lockIntent = new Intent(this, LockScreen.class);
lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(lockIntent);
}
}
return START_STICKY;
}
答案 0 :(得分:0)
您的服务似乎很好,也许您想查看mine which I wrote a few months ago。
自Andriod L(Android 5.0)以来,getRunningTasks()
不再提供当前活动(由于安全原因)。如果您想了解更多信息,请查看此stackoverflow帖子:Alternative to getRunningTasks in Android L
但是,似乎有一些解决方法:在Android 5.0中,您仍然可以获取所有正在运行的任务,然后在其流程重要性后进行过滤。如果重要性等于IMPORTANCE_FOREGROUND
,则此应用可能目前位于前台。可以找到一个示例in this stackoverflow answer。