我有点需要帮助的问题。我们正在制作一个设备,我们需要限制用户做很多事情。因此,我们调查了制作自定义启动器,以隐藏某些应用和功能的显示。
但我们还需要做的一件事是限制用户可以从android中的设置菜单/应用设置。看起来改变这个应用程序/菜单中可见/可访问内容的唯一方法是编写我们自己的自定义ROM,我们不想这样做。
所以我想知道的是,我可以在android中编写一个新的设置应用来替换默认设置吗?
提前致谢, 的Wihan
答案 0 :(得分:1)
简短的回答是,不。设置应用程序与ROM捆绑在一起,是一个特权应用程序,可以访问受保护的设置以及隐藏的API。您可以尝试创建自己的,但必须使用用于对ROM的其他内部组件进行签名的平台密钥进行签名,并且如果内部(非SDK)API也需要针对某些内部组件构建。
答案 1 :(得分:0)
如果您只想限制用户更改设置,可以通过在清单中添加下一行来使您的应用充当其他设置应用
<action android:name="android.settings.SETTINGS" />
例如,如果你正在制作一个启动器应用程序,那么如果你想要将它设置为启动器和启动器活动,那么这就是你在清单中的活动应该是什么样的。
<activity
android:name=".ExampleActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.settings.SETTINGS" />
</intent-filter>
</activity>
答案 2 :(得分:0)
我已使用设备所有者完成此操作。 首先在清单中声明具有意图过滤器的活动
<!-- Default Activity Intent for Settings App -->
<activity
android:name=".ui.DeviceSettings"
android:label="@string/settings_label">
<intent-filter>
<action android:name="android.settings.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
然后使用设备策略管理器setPersistentPreferredActivity
val DEFAULT_ANDROID_SETTINGS_INTENT = IntentFilter(ACTION_SETTINGS).apply {
addCategory(Intent.CATEGORY_DEFAULT)
}
val settingsComponentName = ComponentName(
packageName,
settingsActivity
)
devicePolicyManager.addPersistentPreferredActivity(
componentName,
DEFAULT_ANDROID_SETTINGS_INTENT,
settingsComponentName
)
要完成此设置,您必须禁用设备的默认“设置”应用程序(程序包可能因OEM而异),请使用
隐藏该应用程序devicePolicyManager.setApplicationHidden(componentName,"com.android.settings",true)