18 Stimmen

Programmatisch feststellen, ob die Installation aus unbekannten Quellen erlaubt ist

Ich muss herausfinden, ob das aktuelle Android-Gerät die Installation von Anwendungen aus anderen Quellen als dem Markt erlaubt. Diese Option erscheint in den Einstellungen UI unter Anwendungen namens "Unbekannte Quellen".

Diese Einstellung ermöglicht es Ihnen, APKs herunterzuladen und zu installieren, die nicht aus dem Google-App-Markt stammen.

Wie kann ich mit Hilfe von Code überprüfen, ob dieses Kennzeichen aktiviert oder deaktiviert ist?

27voto

MSquare Punkte 6151

Hier ist der Code, der die genannte Einstellung verwendet:

boolean isNonPlayAppAllowed = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS) == 1;

Auch die Anzeige der Einstellung für den Benutzer könnte nützlich sein:

if (!isNonPlayAppAllowed) {
    startActivity(new Intent(android.provider.Settings.ACTION_SECURITY_SETTINGS));
}

12voto

Mikle Punkte 1782

Diese Einstellung wird als " INSTALL_NON_MARKET_APP" (für Dokumentation anklicken) .

(Ich hatte die Frage im Grunde schon abgetippt, als ich die Antwort unter einem anderen Namen tief in der Dokumentation versteckt fand, also beschloss ich, die Frage und die Antwort selbst zu posten, da sie nicht trivial ist).

4voto

AC1D Punkte 230
    boolean allow = false;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
         allow = this.getPackageManager().canRequestPackageInstalls();
        } else {
        try {
         allow = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS) == 1;
            } catch (Settings.SettingNotFoundException e) {
              e.printStackTrace();
              }
       }

    if (!allow)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
       startActivity(new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES));
       } else {
       startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS));
       }

1voto

Fahad Alotaibi Punkte 406

Können Sie den Paketmanager bitten, Ihnen mitzuteilen

 applicationContext.packageManager.canRequestPackageInstalls()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X