«При установке моего приложения с использованием QR-кода приложения владельца устройства отображается сообщение «ЗаблокиAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 «При установке моего приложения с использованием QR-кода приложения владельца устройства отображается сообщение «Заблоки

Сообщение Гость »


введите здесь описание изображения

Я создал приложение владельца устройства, но не могу установить его на реальном устройстве. Я генерирую Qr-код, используя https://datalogic.github.io/aeqrdoc/generat.

Текст, который я использую для создания QR-кода:

{ "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.example.demo/com.example.demo.DemoAppDeviceAdminReceiver", "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "DyseoYKEDCtnYx3jyiHCdLUvZ7F-uFenEe4sZ9bRZYw", "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://www.dropbox.com/scl/fi/q6094arg ... m7ppc&dl=1" } Я создаю свой apk из студии Android следующим образом: Сборка -> Создать подписанный пакет/Apk-> выбрать APK-> Создать новое хранилище ключей -> ОК -> Далее-> Выберите «Выпустить» -> Сборка. Затем я создаю контрольную сумму пакета, используя

cat /mnt/c/Users/Antarpuneet/app-release.apk | openssl dgst -binary -sha256 | OpenSSL Base64 | tr '+/' '-_' | тр -д '=' После сброса настроек к заводским настройкам при 6-кратном нажатии на экран приветствия открывается приложение для чтения QR-кодов, я сканирую код, а затем попадаю на экран подключения к Wi-Fi и успешно подключаюсь к Интернету. Пишет Настройка устройства.. но возвращается с ошибкой «Невозможно настроить устройство — не удалось установить приложение администратора».

Это класс DemoAppDeviceAdminReceiver :-

пакет com.example.demo; импортировать статический android.content.ContentValues.TAG; импортировать android.app.admin.DeviceAdminReceiver; импортировать android.content.ComponentName; импортировать android.content.Context; импортировать android.content.Intent; импортировать android.util.Log; импортировать android.widget.Toast; публичный класс DemoAppDeviceAdminReceiver расширяет DeviceAdminReceiver { // Необязательно: переопределить методы, необходимые для обработки событий администратора устройства. // Например: @Override public void onEnabled (контекст контекста, намерение) { // Администратор устройства включен super.onEnabled(контекст, намерение); Log.d(TAG, «Владелец устройства включен»); Toast.makeText(context, «DemoAppDeviceAdminReceiver: Включить администратора устройства», Toast.LENGTH_SHORT).show(); } @Override public CharSequence onDisableRequested (контекст контекста, намерение намерения) { // Возвращаем сообщение, когда пользователь пытается отключить администратора устройства return «Отключение администратора этого устройства приведет к удалению важных функций.»; } // Другие переопределения для событий администратора по мере необходимости static ComponentName getComponentName (контекст контекста) { вернуть новое имя компонента (context.getApplicationContext(), DemoAppDeviceAdminReceiver.class); } } Моя основная деятельность:-

пакет com.example.demo; импортировать android.app.Activity; импортировать android.app.admin.DevicePolicyManager; импортировать android.content.ComponentName; импортировать android.content.Context; импортировать android.content.Intent; импортировать android.os.Bundle; импортировать android.util.Log; импортировать android.widget.Toast; импортировать androidx.annotation.Nullable; импортировать androidx.appcompat.app.AppCompatActivity; публичный класс MainActivity расширяет AppCompatActivity { частный int YOUR_REQUEST_CODE = 100; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_main); ComponentName adminComponentName = новое ComponentName(this, DemoAppDeviceAdminReceiver.class); DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); //TODO: запросить активацию администратора устройства Намерение намерение = новое намерение (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); Intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponentName); Intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, «Объяснение того, почему вашему приложению необходим доступ администратора устройства»); //TODO: запустить действие, которое предложит пользователю предоставить приложению права администратора устройства. startActivityForResult (намерение, YOUR_REQUEST_CODE); //TODO: проверить, является ли приложение администратором устройства или нет. логическое значение isAdminActive = devicePolicyManager.isAdminActive(adminComponentName); если (isAdminActive) { // Ваше приложение является администратором устройства Toast.makeText(this, «Ваше приложение является администратором устройства», Toast.LENGTH_SHORT).show(); } еще { // Ваше приложение не является администратором устройства Toast.makeText(this, «Ваше приложение не является администратором устройства», Toast.LENGTH_SHORT).show(); } //TODO: проверить, является ли приложение владельцем устройства или нет. if (devicePolicyManager.isDeviceOwnerApp("com.example.demo")) { Toast.makeText(this, "ДА", Toast.LENGTH_SHORT).show(); Log.i("Статус", "Да"); } еще { Toast.makeText(this, «НЕТ», Toast.LENGTH_SHORT).show(); Log.i("Статус", "Нет"); } // devicePolicyManager.reboot(adminComponentName); } [введите описание изображения здесь](Изображение) //TODO: обработка результата запроса на активацию администратора устройства @Override protected void onActivityResult(int requestCode, int resultCode, данные намерения @Nullable) { super.onActivityResult(requestCode, resultCode, data); если (requestCode == YOUR_REQUEST_CODE) { если (resultCode == Activity.RESULT_OK) { // Администратор устройства успешно активирован Toast.makeText(this, «Администратор устройства успешно активирован», Toast.LENGTH_SHORT).show(); } еще { // Активация администратора устройства была отменена или не удалась Toast.makeText(this, «Активация администратора устройства была отменена или не удалась», Toast.LENGTH_SHORT).show(); } } } } Мой файл манифеста:-

device_admin_receive.xml :-

Что я уже пробовал:

Установка приложения на эмуляторе с помощью команды оболочки adb оболочка adb dpm set-device-owner com.example.demo/.DemoAppDeviceAdminReceiver

Приложение успешно назначается владельцем устройства.

Установка приложения на реальном устройстве (после сброса настроек и пропуска страницы входа в систему) с помощью команды adb, указанной выше. Он успешно настраивает приложение в качестве владельца устройства. Думаю, это означает, что проблема в QR-коде.

Я пытаюсь установить его на устройство с Android версии 13.
Теперь мое приложение загружается, но при установке появляется сообщение «Заблокировано Play Protect», и когда я нажимаю «Все равно установить», оно возвращается со старой ошибкой: «Невозможно настроить устройство — не удалось установить приложение администратора» < /п>
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»