创建服务以检测打开的设置

时间:2012-08-31 09:09:23

标签: android

由于我是我公司提供的用户手机管理员,因此我需要限制用户打开设置。我想创建一个服务来检测何时打开设置。但我找不到我需要在服务代码中监视哪个意图并显示xml?

例如,

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_CHANGED);
this.registerReceiver(mBroadcastReceiver, filter);


<intent-filter>
            <action android:name="android.intent.action.TIMT_SET"/> 
</intent-filter>

以上是我在网上搜索的例子,但我不知道哪个意图代表了SETTINGS。

3 个答案:

答案 0 :(得分:2)

  

由于我是我公司提供的用户手机管理员,因此我需要限制用户打开设置。

创建自己的Android操作系统自定义版本,锁定“设置”应用,将自定义版本打包到您自己的自定义ROM模块中,然后在您要分发的设备上安装该ROM版本。

答案 1 :(得分:1)

我知道两种方式都有他们的(dis-)优势。

1)您可以检测您的应用是否会进入用户打开菜单时发生的背景。处理程序是:

public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);

在那里你可以关闭所有系统菜单,甚至是重启或关闭设备的菜单! 这是通过以下意图完成的:

Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);

2)您可以开始与后台工作人员一起运行服务,该工作人员经常检查前端应用程序(例如每秒两次)。您可以像这样获得前台应用程序:

String packageName;
String className;
ActivityManager amen = (ActivityManager)getBaseContext().getSystemService(Activity.ACTIVITY_SERVICE);
packageName = amen.getRunningTasks(1).get(0).topActivity.getPackageName();
className = amen.getRunningTasks(1).get(0).topActivity.getClassName();

设置的包名称为: com.android.settings

如果您检测到它,您只需启动一个将您的应用程序带回前台的意图。

希望有所帮助:)

答案 2 :(得分:-1)

写一个Service来读取系统LogCat,当应用程序启动时,它将显示一个非常独特的日志。例如,这是启动Gmail应用程序时的日志。

08-31 16:42:28.650: I/ActivityManager(3905): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.gm/.ConversationListActivityGmail bnds=[240,384][360,534]} from pid 7290

嗯,对于您的情况,只需比较cmp=如果它等于com.android.settings,那么就做你需要做的事。