Не найдено ни одного действия для обработки намерения {act = android.app.action.ADD_DEVICE_ADMIN (есть дополнения)} - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь включить администрирование устройства, чтобы я мог создать дополнительных пользователей в Android 9.

Сначала необходимо отправить намерение с ACTION_ADD_DEVICE_ADMIN, как показано ниже:

                    // Launch the activity to have the user enable our admin.
                Intent deviceAdminIntent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                deviceAdminIntent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminRen);
                deviceAdminIntent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                        getResources().getString(R.string.device_admin_activation_message));

                startActivityForResult(deviceAdminIntent, REQ_ENABLE_DEVICE_ADMIN);

DeviceAdminReceiver должен быть предварительно определен в manifest.xml с соответствующим фильтром намерений:

    <activity android:name=".AuthSessionActivity" />
    <activity android:name=".CreateRenUser"/>
    <receiver android:name=".DeviceAdminRen"
        android:label="@string/renault_device_admin"
        android:description="@string/ren_device_admin_description"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin_ren" />
        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>

Также определен класс deviceAdminReceiver:

public class DeviceAdminRen extends DeviceAdminReceiver {

.........

Но тогда я получаю ошибку:

03-28 16: 44: 54.573 7173 7173 E AndroidRuntime: java.lang.RuntimeException: не удалось возобновить действие {com.sensory.trulysecureexample / com.sensory.trulysecure.custom.CreateRenaultUser}: android.content.ActivityNotFoundException: не найдено ни одного действия для обработки намеренияActivityThread.java:3822) 03-28 16: 44: 54.573 7173 7173 E AndroidRuntime: at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3854) 03-28 16: 44: 54.573 7173 7173 E AndroidRuntime: at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityIte

В моем приложении Android есть несколько действий и фрагментов, но, если я правильно понимаю,это должно быть системное действие Android.Кроме того, на моем устройстве есть «функция: android.software.device_admin» при перечислении с «функциями списка adb shell pm». Есть ли на моем устройстве какие-либо ограничения, препятствующие обработке намерений ACTION_ADD_DEVICE_ADMIN ??

Примечание. Я следовал за этим GoogleРуководство для Android https://developer.android.com/guide/topics/admin/device-admin.html

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Поскольку я собираю свое приложение с помощью Android NDK, я добавил директиву сборки LOCAL_PRIVILEGED_MODULE в Makefile библиотеки C ++.gnu-libstdc ++ / Android.mk:LOCAL_PRIVILEGED_MODULE: = true

И это сработало !!В Android появляется запрос на включение администрирования устройства, после чего становится легко создавать дополнительных пользователей.

0 голосов
/ 08 апреля 2019

Каково содержание константы / переменной mDeviceAdminRen?Это, кажется, отсутствует в вашем фрагменте кода.

Он должен содержать имя компонента компонента администратора устройства, поэтому в вашем случае DeviceAdminRen.getComponentName(Context context).

Это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...