Не найдено действий для обработки намерения { act= android.app.action.ADD_DEVICE_ADMIN (имеет дополнительные возможности) }

#android #device-admin #android-multiple-users

#Android #администратор устройства #android-многопользовательский

Вопрос:

Я пытаюсь включить администрирование устройства, чтобы я мог создавать дополнительных пользователей в 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);
  

Приемник DeviceAdmin должен быть предварительно определен в 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 android Время выполнения: java.lang.RuntimeException: Не удается возобновить действие {com.sensory.trulysecureexample/com.sensory.trulysecure.custom.CreateRenaultUser}: android.content.ActivityNotFoundException: Не найдено действий для обработки намерения { act=android.app.action.ADD_DEVICE_ADMIN (имеет дополнительные функции) } 03-28 16:44:54.573 7173 7173 E android runtime: в android.app.ActivityThread.performResumeActivity(ActivityThread.java:3822) 03-28 16:44:54.573 7173 7173 E android runtime: в android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3854) 03-28 16:44:54.573 7173 7173 E Время работы android: при android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityIte

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

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

Спасибо

Ответ №1:

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

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

Так ли это?

Комментарии:

1. Да, это так: mDeviceAdminRent = new ComponentName(getActivity(), DeviceAdminRen.class); но сейчас это работает, как указано в моем ответе ниже

Ответ №2:

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

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