专用设备

Glass 通常配置为专用设备,包含少量构成企业解决方案的应用。以下指南演示了如何将 Glass 设置为专用设备。

正在预配

Glass Enterprise Edition 2 上的低接触配置会安装并配置从二维码中提供的元数据下载的管理员应用。此应用可以利用 DevicePolicyManager API,这是管理设备配置的首选方法。

替换启动器

如需设置专用设备,您必须替换启动器应用。这样可确保在设备重新启动后自动启动专用应用。以下内容概述了准备应用并将其设置为启动器的相关任务:

  • activity intent 过滤器
  • 设置新的启动器
  • activity intent 过滤器

    您需要在应用清单中向主 activity 添加以下类别:

    <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.category.LAUNCHER"/>
    
      <category android:name="android.intent.category.HOME"/>
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

    设置新的启动器

    如需设置新的启动器,请从管理员应用调用 addPersistentPreferredActivity()。只有在设备已完成配置的情况下,此方法才有效。对于未配置的设备,请从设备上的界面中选择新的启动器。

    添加持久性首选 activity

    此方法允许您在不与设备交互的情况下,将给定的 componentName 设置为设备的启动器。

    Kotlin

    val filter = IntentFilter(Intent.ACTION_MAIN)
    filter.addCategory(Intent.CATEGORY_HOME)
    filter.addCategory(Intent.CATEGORY_DEFAULT)
    
    val componentName = ComponentName(PACKAGE_NAME, CLASS_NAME)
    val devicePolicyManager: DevicePolicyManager =
        context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
    val adminName = getComponentName(context)
    devicePolicyManager.addPersistentPreferredActivity(adminName, filter, componentName)

    Java

    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
    filter.addCategory(Intent.CATEGORY_HOME);
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    
    final ComponentName componentName = new ComponentName(PACKAGE_NAME, CLASS_NAME);
    DevicePolicyManager devicePolicyManager =
        (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    final adminName = getComponentName(context);
    devicePolicyManager.addPersistentPreferredActivity(adminName, filter, componentName);

    使用设备上的界面

    使用以下方法之一在屏幕上显示启动器选择对话框:

    在设置中使用向上滑动触控手势

    在主屏幕上向后滑动,以显示设置摘要界面。然后,点按进入设置界面。向上滑动以显示对话框。

    在应用中使用 intent

    Kotlin

    val intent = Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);

    Java

    final Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
    使用 adb 命令

    adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME

    在触控板上向前和向后滑动,选择所需的应用,然后点按以确认。使用相同的方法选择“始终”按钮。

    锁定任务模式

    锁定任务模式允许您创建可在设备上运行的软件包列表。

    设置允许的软件包

    以下代码段展示了如何设置软件包列表:

    Kotlin

    private val KIOSK_PACKAGE = "com.example.kiosk"
    private val PLAYER_PACKAGE = "com.example.player"
    private val APP_PACKAGES = arrayOf(KIOSK_PACKAGE, PLAYER_PACKAGE)
    
    val devicePolicyManager: DevicePolicyManager =
      context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
    val adminName = getComponentName(context)
    devicePolicyManager.setLockTaskPackages(adminName, APP_PACKAGES)

    Java

    private static final String KIOSK_PACKAGE = "com.example.kiosk";
    private static final String PLAYER_PACKAGE = "com.example.player";
    private static final String[] APP_PACKAGES = {KIOSK_PACKAGE, PLAYER_PACKAGE};
    
    final DevicePolicyManager devicePolicyManager =
        (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    final ComponentName adminName = getComponentName(context);
    devicePolicyManager.setLockTaskPackages(adminName, APP_PACKAGES);

    启动锁定任务模式

    锁定任务模式可由应用 activity 启动。以下代码段展示了如何执行此操作:

    Kotlin

    override fun onResume() {
        super.onResume()
        activity.startLockTask()
    }

    Java

    @Override
    public void onResume() {
      super.onResume();
      getActivity().startLockTask();
    }