#java #android #android_studio
Как запросить , разрешена ли на устройстве "Установка из небезопасных источников"? Если возможно пример кода.
Ответы
Ответ 1
Вкратце, чтобы пользователи с Android API 25 и ниже могли устанавливать из небезопасных источников, они должны включить параметр "Неизвестные источники" в настройках. 1 Примечание: Когда пользователи пытаются установить неизвестное приложение на устройстве под управлением Android 7.1.1 (уровень 25 API) или ниже, система иногда показывает диалоговое окно которое спрашивает пользователя, независимо от того, хотят ли они позволить только одного конкретного неизвестного приложения для установки. Почти во всех случаях пользователи должны позволить только одно неизвестное приложение установки в то время, если параметр доступен для них. 1 boolean isNonPlayAppAllowed = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS) == 1; if (!isNonPlayAppAllowed) { startActivity(new Intent(android.provider.Settings.ACTION_SECURITY_SETTINGS)); } 3 А для того, чтобы пользователи с Android API 26 и выше, могли устанавливать из небезопасных источников необходимо предоставить разрешение. 1 Добавить в manifest.xml 2Затем самое основное: 2 private void checkIsAndroidO() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { boolean result = getPackageManager().canRequestPackageInstalls(); if (result) { installApk(); } else { ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.REQUEST_INSTALL_PACKAGES}, INSTALL_PACKAGES_REQUESTCODE); } } else { installApk(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case INSTALL_PACKAGES_REQUESTCODE: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { installApk(); } else { Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES); } break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case GET_UNKNOWN_APP_SOURCES: checkIsAndroidO(); break; default: break; } } Источники: 1, 2, 3
Комментариев нет:
Отправить комментарий