adb shell dpm set-device-owner 在配备 Android 9 TV 的 Mi TV Stick 上失败

问题描述 投票:0回答:1

我有一个 Kiosk 应用程序,我希望它能够自行更新。为此,我尝试以设备所有者身份在 Mi TV Stick 上运行该应用程序。型号为MiTV-AESP0,内核为4.9.113

当我在运行 Android TV 9 的模拟器上运行 dpm 命令时,该命令可以正常工作。

我已经为管理服务设置了一个接收器

public class DeviceAdminBroadcastReceiver extends DeviceAdminReceiver {
    private static final String TAG = DeviceAdminBroadcastReceiver.class.getSimpleName();
    public static ComponentName getComponentName(Context context) {
        return new ComponentName(context.getApplicationContext(), DeviceAdminBroadcastReceiver.class);
    }

    @Override
    public void onEnabled(Context context, Intent intent) {
        super.onEnabled(context, intent);
        Log.d(TAG, "Device Owner Turned ON");
    }
    @Override
    public void onDisabled(Context context, Intent intent) {
        super.onDisabled(context, intent);
        Log.d(TAG, "Device Owner Turned OFF");
    }
    @Override
    public void onLockTaskModeEntering(Context context, Intent intent, String pkg) {
        // invoked when any app enters "kiosk" mode
    }
    @Override
    public void onLockTaskModeExiting(Context context, Intent intent) {
        // invoked when exiting "kiosk" mode
    }
}

在我的清单文件中,我已经声明了接收者

        <receiver
            android:name=".receivers.DeviceAdminBroadcastReceiver"
            android:exported="true"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin" />
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
                <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" />
            </intent-filter>
        </receiver>

在我的 res/xml 文件夹中,我有一个 device_admin.xml 文件

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
</device-admin>

如果我尝试在电视棒上运行它,我会得到以下信息:

adb shell dpm set-device-owner com.tfsdisplays.packagemanager.local/com.tfsdisplays.packagemanager.receivers.DeviceAdminBroadcastReceiver                
java.lang.RuntimeException: Can't set package ComponentInfo{com.tfsdisplays.packagemanager.local/com.tfsdisplays.packagemanager.receivers.DeviceAdminBroadcastReceiver} as device owner.
        at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:177)
        at com.android.commands.dpm.Dpm.onRun(Dpm.java:106)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:54)
        at com.android.commands.dpm.Dpm.main(Dpm.java:41)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:340)

相同的命令适用于连接到 ADB 的模拟器。我已经尝试过使用电缆和WIFI进行USB调试。 ADB 版本 40 和 41。

我也对电视棒进行了出厂重置,似乎没有什么区别。 Stick 上没有帐户,device_policy 转储显示以下内容:

adb shell dumpsys device_policy                                                                                                                           
Current Device Policy Manager state:

  Enabled Device Admins (User 0, provisioningState: 0):

    mPasswordOwner=-1

  Constants:
    DAS_DIED_SERVICE_RECONNECT_BACKOFF_SEC: 3600
    DAS_DIED_SERVICE_RECONNECT_BACKOFF_INCREASE: 2.0
    DAS_DIED_SERVICE_RECONNECT_MAX_BACKOFF_SEC: 86400

  Stats:
    LockGuard.guard(): count=0, total=0.0ms, avg=0.000ms, max calls/s=0 max dur/s=0.0ms max time=0.0ms

  Encryption Status: per-user

拜托,我在这里束手无策,有人有任何想法吗? 先谢谢你了

android adb android-tv xiaomi device-owner
1个回答
0
投票

对于遇到此问题的任何人,我也在装有 Android 9 的创维电视上进行了尝试,并得到了相同的结果。

但是它确实可以在 Chromecast 4k 上运行,所以我猜它与设备相关。

© www.soinside.com 2019 - 2024. All rights reserved.