如何将Android应用设置为设备所有者

时间:2019-06-18 10:33:43

标签: android kiosk-mode

我正在Android 5.1上的Android Studio中开发一个android应用程序(这是用于特定平板电脑的应用程序)。我需要我的应用成为设备所有者,并且必须在信息亭模式下运行。 我已经通过以下方式设置了设备所有者: 数据库外壳 dpm set-device-owner com.foo.deviceowner / .DeviceAdminRcvr 现在,我想知道是否可以通过编程将我的应用设置为设备所有者,而无需NFC,手机支持或使用Android Studio Shell。我已经在代码中使用了: Runtime.getRuntime()。exec(“ adb shell dpm set-device-owner com.foo.deviceowner / .DeviceAdminRcvr”); 但这没用。 (How to make my app device owner without NFC and ADB shell command

我的第二个问题是: 将应用程序固定到屏幕后,导航栏仍会显示(仅带有返回按钮,显示Toast)。可以禁用此栏的显示吗?

我的最后一个问题: 我希望我的应用在设备启动时启动。我加了:

<category android:name="android.intent.category.HOME"/>

进入我的活动并实现了BroadcastReceiver。我的应用程序首次启动时,Android会要求选择家庭应用程序。有没有一种方法可以将应用设置为家庭应用,而无需用户询问?

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

例如,您必须在应用程序中使用DeviceAdminReceiver类

class AdminReceiver : DeviceAdminReceiver() {
    companion object {
        private const val TAG = "AdminReceiver"

        fun getComponentName(context: Context): ComponentName =
                 ComponentName(context.applicationContext, AdminReceiver::class.java)
    }

    override fun onEnabled(context: Context?, intent: Intent?) {
         Log.i(TAG, "Enabled")
         showLongToast(context!!, R.string.app_enable)

         MainActivity.launch(context)

         super.onEnabled(context, intent)
    }

     override fun onDisabled(context: Context?, intent: Intent?) {
         Log.i(TAG, "Disabled")
         showLongToast(context!!, R.string.app_enable)
         super.onDisabled(context, intent)
    }
 }

您可以在我的存储库https://github.com/ArtemBotnev/AdminApp/blob/master/app/src/main/java/ru/rs/adminapp/AdminReceiver.kt

中看到完整的示例