由于我是我公司提供的用户手机管理员,因此我需要限制用户打开设置。我想创建一个服务来检测何时打开设置。但我找不到我需要在服务代码中监视哪个意图并显示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。
答案 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
,那么就做你需要做的事。