2014-08-28 53 views
0

我想要当用户尝试打开Settings应用程序或包com.android.settings(所有应用程序在Settings像电池,wifi,声音等),它会显示Toast 。我将在Service中创建。这里是我的代码:android:检测设置(com.android.settings)是否打开

public int onStartCommand(Intent intent, int flags, int startId) { 
    Toast.makeText(this, " MyService Started", Toast.LENGTH_LONG).show(); 
    //if(Settings is open){ 
     //Toast.makeText . . . 
    } 

    return START_STICKY; 
} 

我已经全部在stackoverflow,但仍然无法正常工作。我为我的英语道歉,如果你提出解决方案,我会很高兴。谢谢。 。

回答

0

,直到你指定的包被找到(或没有),这将让所有当前正在运行的任务和循环他们的包名:

ActivityManager activityManager = (ActivityManager) 
     getSystemService(Context.ACTIVITY_SERVICE); 

List<RunningTaskInfo> tasks = activityManager 
     .getRunningTasks(Integer.MAX_VALUE); 

for (RunningTaskInfo task : tasks) { 
    if (task.baseActivity.getPackageName().equalsIgnoreCase("com.android.settings")) { 
     Toast.makeText(this, " MyService Started", Toast.LENGTH_LONG).show(); 
    }    
} 

此权限也添加到您的清单:

<uses-permission android:name="android.permission.GET_TASKS" /> 
+0

很好。 。有用。 Thx兄弟,你救了我的生命 – dtnder 2014-08-28 16:51:15

+0

对不起,但为什么总是显示'吐司'。我只是想当用户点击“设置”或“Wifi”。 。 – dtnder 2014-08-28 17:15:27

+0

@dtnder它显示了设置包启动时的敬酒,就像你问的那样。 – Simas 2014-08-28 17:17:16