• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Code läuft unter SDK 27 aber nicht SDK 30

W

wer112

Mitglied
Ich habe einen DownloadManager gefunden, wo man Dateien/Apps/Audio downloaden kann. Leider muss ich feststellen, dass dies nicht möglich ist, außer man stellt die tragedSDKVersion auf 27. Ich finde nirgendwo einen Grund, wiso dass nur bei 27 funktioniert. Ich benötige dringend eure Hilfe.

Meine Fragen:

1. Warum geht es nicht, außer wenn man die TragedSDKVersion auf 27 stellt und nicht z.B 30
2. Was kann ich machen, dass es auf jedes Smartphone funktioniert?

Ich schicke euch mal den Code. Dieser geht, solange wie es auf 27 ist.

Java:
String url = "http://www. ..... .de/appsordner/app-release.apk";

        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
        request.setTitle("Download");
        request.setDescription("APK Downloading...");
        request.allowScanningByMediaScanner();
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "app-release.apk");

        DownloadManager manager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
        manager.enqueue(request);

Und das ist das Mainifest:

Java:
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>



    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

Und das ist die App BUILD:

Java:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.1"

    defaultConfig {
        applicationId ".............."
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}

Ich hoffe, das ihr mir helfen könnt, dass es auf allen Smartphones funktioniert mit der aktuellen targetSDKversion 30.

Ich bin für jede Hilfe sehr dankbar!
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Wie äußert sich denn das "funktioniert nicht"? Kompiliert es nicht oder gibt es Laufzeitfehler, und in beiden Fällen, wie sieht der Fehler aus?
 
L

LimDul

Top Contributor
Ansonsten generell mal auch die SKDs dazwischen ausprobieren, wenn ich das richtig lese ist SDK 27 Android 8 und SDK 30 Android 11. Das heißt, du solltest mal bei Android lesen, was sich da alles geändert hat. Für SDK 29->30 findet man z.B. das der Zugriff auf folgende Sachen blockiert wurde: https://developer.android.com/about/versions/11/non-sdk-11#new-blocked

Das sind aber nur die Änderungen von 29->30. Du brauchst auch die Änderungen von 27->28 und 28->29.
 
W

wer112

Mitglied
Wie äußert sich denn das "funktioniert nicht"? Kompiliert es nicht oder gibt es Laufzeitfehler, und in beiden Fällen, wie sieht der Fehler aus?
Wenn ich die App auf t30 habe oder 27 oder 28 bzw. Alles unter ca. 26, dann drücke ich auf den Button und oben in den Benachrichtigung steht sofort fehlgeschlagen. Der DownloadManger kann das nur mit t27 downloaden die Sachen, sonst kommt fehlgeschlagen.
 
W

wer112

Mitglied
Ansonsten generell mal auch die SKDs dazwischen ausprobieren, wenn ich das richtig lese ist SDK 27 Android 8 und SDK 30 Android 11. Das heißt, du solltest mal bei Android lesen, was sich da alles geändert hat. Für SDK 29->30 findet man z.B. das der Zugriff auf folgende Sachen blockiert wurde: https://developer.android.com/about/versions/11/non-sdk-11#new-blocked

Das sind aber nur die Änderungen von 29->30. Du brauchst auch die Änderungen von 27->28 und 28->29.
Das hilft mir nicht und von einem DownloadManger steht nirgendwo. Ich hatte damals ein Problem, mit Wifi und da geht man einfach z.B. auf die developer Android seite zum DownloadManger und sa wird es erklärt. Dort befindet sich auch der Hinweis, bis welche termin funktioniert und ab wann es "geblockt" ist. In diesem Fall habe ich nix gesehen. Die Frage ist, warum geht es nicht unter 27??? Z.B. warum geht es nicht mit 23 oder 24??? Ich denke nicht, das der DownloadManger nur für Api 27 entwickelt wurden ist...
 
L

LimDul

Top Contributor
Ich hab selber von Android-Entwicklung keine Ahnung -. aber hilfreich wäre:

Was ist der DownloadManager? Ein Komponente von Android? Wenn ja, wo ist die dokumentiert?
Eine Third-Party Library? Wenn ja, wo ist die dokumentiert?

Wenn Fehlgeschlagen steht => Debuggen und logs auswerten, was fehlschlägt. In der Entwicklung ist man (egal wofür man entwickelt) drauf angewiesen, dass man auch unter die Haube (=In Logs, Debug etc.) schauen kann.
 
kneitzel

kneitzel

Top Contributor
Was ist der DownloadManager? Ein Komponente von Android? Wenn ja, wo ist die dokumentiert?

Aber das ändert nichts daran, dass die Aussage vom TE bezüglich Fehlersuche einfach nicht ausreicht:
dann drücke ich auf den Button und oben in den Benachrichtigung steht sofort fehlgeschlagen.
Du machst etwas, das fehlschlägt und Du reagierst darauf, dass Du eine Benachrichtigung anzeigst? Oder was genau passiert da? Du bist generell sehr schwer zu verstehen finde ich.
 
W

wer112

Mitglied
Das Video zeigt wie es prima mit t27 funktioniert. Wenn ich es auf 30 habe die termin, dann steht da nicht Download abgeschlossen, sondern Download fehlgeschlagen. Und dann lädt es nicht runter.
 
L

LimDul

Top Contributor
Also, entweder du bist Nutzer ein Anwendung => An die wenden, die die Anwendung entwickeln
Oder du entwickelst selber => Dann benötigt so eine Meldung der Form "geht nicht" die möglichst exakte Code stelle die nicht geht und falls dort irgendwelche Exceptions geworfen werden die ebenfalls. Ein "An der Oberfläche kommt fehlgeschlagen" reicht da nicht. Sprich du musst mal die Anwendung, die du ja gerade baust, debuggen und schauen an welcher Stelle es exakt mit welchem technischen Grund (ich würde ad-hoc auf eine Exception tippen, die gefangen und in eine Nachricht umgewandelt wird tippen). Ansonsten ist das reines raten unserseits.
 
kneitzel

kneitzel

Top Contributor
Was für ein Video?

Und hast Du schon die logs auf dem System geprüft? Auch der DownloadManager sollte da entsprechende Informationen loggen.

Oder Du kannst die Id, die enqueue zurücl gibt, merken. Dann kannst Du mittels query einen Cursor bekommen mit den Details. Ich habe jetzt nicht geprüft, was da der downloadmanager im Detail zurück gibt.

Du prüfst immer in der gleichen VM / dem gleichen Smartphone? Oder hast Du unterschiedliche Testsysteme? Ich würde erwarten, dass der DownlaodManager selbst die Prüfung auf valide Downloads durchführt, aber evtl. macht das SDK da auch noch irgendwas. Evtl. gibt es in der neueren SDK Version eine Prüfung, was herunter geladen wird. Da Du ja eine apk Datei herunter laden willst, kann es hier ggf. zu Problemen kommen. Aber das würde ich eigentlich innerhalb von Android / dem DownloadManager erwarten. (Android hat halt Settings bekommen a.la. "download apks from unsecure locations" (oder so ähnlich).
 
kneitzel

kneitzel

Top Contributor
Ein "An der Oberfläche kommt fehlgeschlagen" reicht da nicht. Sprich du musst mal die Anwendung, die du ja gerade baust, debuggen und schauen an welcher Stelle es exakt mit welchem technischen Grund (ich würde ad-hoc auf eine Exception tippen, die gefangen und in eine Nachricht umgewandelt wird tippen). Ansonsten ist das reines raten unserseits.
Ich fürchte, er sieht nicht mehr. Er gibt nur einen Download Request an den DownloadManager so wie ich es verstehe. Damit obliegt es komplett der Systemkomponente DownloadManager. Der Download wird also nicht von seiner App selbst durchgeführt.
 
L

LimDul

Top Contributor
Ich fürchte, er sieht nicht mehr. Er gibt nur einen Download Request an den DownloadManager so wie ich es verstehe. Damit obliegt es komplett der Systemkomponente DownloadManager. Der Download wird also nicht von seiner App selbst durchgeführt.
Ok, so tief bin ich in der Materie nicht drin.
 
W

wer112

Mitglied
Ich fürchte, er sieht nicht mehr. Er gibt nur einen Download Request an den DownloadManager so wie ich es verstehe. Damit obliegt es komplett der Systemkomponente DownloadManager. Der Download wird also nicht von seiner App selbst durchgeführt.

Dort sind die zwei Videos, wo es funktioniert(nur bei t27) und das andere, wie es nicht funktioniert(bei t30 muss eigentlich immer t30 sein)

Ich habe die Log Daten genommen und die DownloadManager Rausgefiltert. Ich habe ein Teil des Logos in die Datei gepackt und die URL sowie 📦 auf hhhh geändert....

Somit könnt ihr was sehen oder wissen, was ich nicht weiß bzw. Wie ich das Problem löse.
 

Anhänge

  • DownloadManager Store Probleme.txt
    6 KB · Aufrufe: 3
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
W

wer112

Mitglied
Vermutlich ist’s schon: „Stop requested with status BAD_REQUEST: Cleartext traffic not permitted for package com.hhhhhh.hhhh: http://www.hhhhh.de/...“

Was willst du damit sagen? Der letzte Kommentar auf der Seite hat eine http angegeben, was bei mir der Fall ist. Der Code funktioniert ja, aber nur wenn die termin auf 27 ist... Was soll ich jetzt tun, damit es bei t30 ebenfalls funktioniert?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Mjpeg Code läuft unter Java jedoch nicht unter Android? Android & Cross-Platform Mobile Apps 11
S onClickListener auf Buttons die im Code erzeugt wurden setzen. Android & Cross-Platform Mobile Apps 8
M QR-Code auslesen mit Tabletkamera Android & Cross-Platform Mobile Apps 3
C Auf Play Store verlinken - Code in einer Extraklasse Android & Cross-Platform Mobile Apps 1
D HTML Code von Website abrufen Android & Cross-Platform Mobile Apps 26
K Android Code so OK? Android & Cross-Platform Mobile Apps 0
C Android Code in mehrere .java verteilen Android & Cross-Platform Mobile Apps 6
S Android Speichern von Informationen in Code oder extern Android & Cross-Platform Mobile Apps 0
M Code effizienter machen Android & Cross-Platform Mobile Apps 16
R Android YouTube Video per Code streamen Android & Cross-Platform Mobile Apps 5
P Brauche Hilfe bei Code Snippet Android & Cross-Platform Mobile Apps 10
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
A Android Android-Code.de - Das Android-Entwickler Forum Android & Cross-Platform Mobile Apps 3
R Android Ist das ein akzeptabler Code? Android & Cross-Platform Mobile Apps 7
J Android QR-Code Scanner mit OpenCV/JavaCV Android & Cross-Platform Mobile Apps 1
P J2ME Code-Beispiele Android & Cross-Platform Mobile Apps 2
2 Code ineffizient? Android & Cross-Platform Mobile Apps 6
H HELP! Code verbessern? Android & Cross-Platform Mobile Apps 3
jmar83 Android Selbst entwickelter SMTP-Client läuft auf PC, nicht aber auf Android Android & Cross-Platform Mobile Apps 9
L Prüfen ob Service läuft Android & Cross-Platform Mobile Apps 3
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
U Seit heute morgen läuft meine OpenGL app nicht mehr Android & Cross-Platform Mobile Apps 2
A AVD läuft, Handy stüzt ab Android & Cross-Platform Mobile Apps 2
E Android Handler läuft zu schnell Android & Cross-Platform Mobile Apps 4
2 Netbeans Handy Projekt läuft nicht auf Handy! Android & Cross-Platform Mobile Apps 3
L Android Leiste unter Fragment Android & Cross-Platform Mobile Apps 2
L Android Methode funktioniert nicht unter Android Android & Cross-Platform Mobile Apps 3
Light Lux Fehlermeldung unter Android Studio Android & Cross-Platform Mobile Apps 1
T JCifs Download unter Android beschleunigen Android & Cross-Platform Mobile Apps 0
L Android Generelle Frage zur Spieleprogrammierung unter Android Android & Cross-Platform Mobile Apps 2
A Android SimpleDateFormat gibt für Date unter android anderes Datum zurück als in Std. Java Android & Cross-Platform Mobile Apps 2
L Jar file auf Pda unter Windows Mobile ausführen Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben