[JAVA] Hinweise zum Aufrufen von Installer in der Android App

Als ich versuchte, eine Anwendung zu erstellen, die nach langer Zeit aktualisiert und installiert wird, gab es verschiedene Änderungen an der Behörde, sodass ich ein Memo schrieb

Umgebung

compileSdkVersion 29 minSdkVersion 24 targetSdkVersion 29

Quellcode

Verwenden Sie die folgenden Berechtigungen, wenn Sie mit Intent zum Installationsprogramm springen

AndroidManifest.xml


<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

Muss über File Provider erfolgen, um Dowloaded apk zu installieren Viele Artikel verwenden immer noch SupportLibrary.v4, aber dieses Mal werde ich Androidx verwenden

build.gradle


implementation 'androidx.core:core:{current version}'

FileProvider wird wie folgt hinzugefügt

AndroidManifest.xml


<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true" >
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths"/>
</provider>

Überspringen Sie es anschließend, wie in verschiedenen Artikeln beschrieben, mit der Absicht, die für jede Android-Version geeignet war

MainActivity.java


            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Uri fileUri = FileProvider.getUriForFile(MainActivity.this,
                        MainActivity.this.getApplicationContext().getPackageName() + ".fileprovider",
                        file);
                Intent i = new Intent(Intent.ACTION_INSTALL_PACKAGE);
                i.setData(fileUri);
                i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                MainActivity.this.startActivity(i);
            } else {
                Uri fileUri = Uri.fromFile(file);
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setDataAndType(fileUri, APK_MIME_TYPE);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                MainActivity.this.startActivity(i);
            }

Ich denke, es kann sich je nach Umgebung ändern, aber das ist genug das ist alles

Recommended Posts

Hinweise zum Aufrufen von Installer in der Android App
[Android] Hinweise zu XML
ROS App Entwicklung auf Android
Rufen Sie Java von C ++ auf Android NDK auf
Hinweise zum Erstellen eines Android-Plug-Ins für Unity
Ich habe eine Taschenrechner-App für Android erstellt
Ermöglicht die automatische Wiedergabe von Youtube auch mit der Android-App von Cordova
Android Wetter App
[Android] Detaillierte Hinweise
Hinweise zum Abrufen von Rückrufen von TextToSpeech
Hinweise zu Protokollpuffern
Python-Memo auf Docker
Android App Spectrum Analyzer
Hinweise zur Mehrfachvererbung
Hinweise zu regulären Ausdrücken
[2018 Preservation Version] Reverse Engineering Android App (.apk) auf Mac
Hinweise zu Android Studio
Informationen zu Android-App-Komponenten
Passen Sie die Listenansicht auf Android an
Startschuss für die persönliche Entwicklung der Android-App
Verwenden Sie die serielle Kommunikation unter Android
Erstelle eine Android App. (Tag 5)
Verwenden Sie nativen Code unter Android
[Ruby] Hinweise zur Methode gets
Veröffentlichte die No Todo App anstelle von Todo. .. (Und Ridgepole Notizen)