Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建服务以检测打开的设置_Android - Fatal编程技术网

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

Android 创建服务以检测打开的设置,android,Android,由于我是我公司提供的用户手机的管理员,我需要限制用户打开设置。我想创建一个服务来检测何时打开设置。但我找不到需要监视服务代码和清单xml的目的是什么 比如说, IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_TIME_CHANGED); this.registerReceiver(mBroadcastReceiver, filter); <intent-filter>

由于我是我公司提供的用户手机的管理员,我需要限制用户打开设置。我想创建一个服务来检测何时打开设置。但我找不到需要监视服务代码和清单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>
IntentFilter过滤器=新的IntentFilter();
filter.addAction(Intent.ACTION\u TIME\u已更改);
此注册表接收器(mBroadcastReceiver,过滤器);

上面是我在web中搜索的示例,但我不知道哪个意图表示设置。

编写
服务
读取系统
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
,然后做您需要做的事情

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


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

我知道两种方法都有各自的优点

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

如果你检测到它,你可以简单地启动一个意图,将你的应用带回前台


希望有帮助:)

您知道JB中日志访问的更改,如果您没有根目录,“做您想做的”可能会受到很大限制?正如@WebnetMobile.com所说,这在JellyBean上不起作用,因为应用程序只能读取自己的日志。感谢您的快速回复。我无法在服务中使用“com.android.settings”的意图来检测设置。服务和清单中是否有相同的意图名称?@Anthony:这不是
intent
,而是关于读取日志信息。。。zzz@WebnetMobile.com,@GuyKun:谢谢你提供的信息,但是,这篇文章的作者真的意味着他的
服务
将只在
JellyBean
上运行吗?因为我们只在手机上安装了一个小应用程序,所以我们不会创建自己定制的安卓操作系统。你有其他建议吗?@Anthony:那就不要试图限制用户打开设置。请记住,他们可以做到这一点,只是通过重新启动设备在安全模式。感谢提醒我的安全模式,我是通过考虑。你能给我一些建议吗?我现在正在试用ActivityManager,它可以检测设置。但我将代码放在onCreate()中,只运行一次。我不知道如何自动监控系统。