Android 7.1.1 Erfragung der Standard Oberfläche bei App Installation.

  • Antworten:2
FrankenDerStein
  • Forum-Beiträge: 25

09.01.2019, 10:29:18 via Website

Guten Tag meine geschätzten Kollegen,

Ich habe mal wieder ein Problem. Ich habe eine App geschrieben, die sich selbst updaten kann. Die Funktion funktioniert soweit sehr gut, nur gibt es mal wieder ein schwarzes Schaf, wo es nicht ganz so toll funktioniert. Ich habe ein Testgerät dass über Android 7.1.1 verfügt. Auf diesem gerät tritt das vernommen auf, dass bei einem Update, das System fragt, was die Standard Oberfläche sei. Ich versteh nicht warum der das fragt, da meine App keine neue Oberfläche ist.

Meine frage ist nun, muss ich damit leben oder gibt es eine Lösung dafür.

 final String UPDATE_FOLDER = Environment.getExternalStorageDirectory().getPath() + File.separator +
                    "download" + File.separator;
            final String UPDATE_FILE = "update.apk";
            URL url = new URL(strings[0]);

            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();


            File file = new File(UPDATE_FOLDER);
            file.mkdirs();
            File outputFile = new File(file, UPDATE_FILE);
            if (outputFile.exists())
                outputFile.delete();


            FileOutputStream fos = new FileOutputStream(outputFile);
            InputStream is = c.getInputStream();

            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = is.read(buffer)) != -1) {
                fos.write(buffer, 0, len1);
            }

            fos.close();
            is.close();

            Intent intent = new Intent(Intent.ACTION_VIEW);
            File temp = new File(UPDATE_FOLDER + UPDATE_FILE);
            if (Build.VERSION.SDK_INT <= 23) {
                intent.setDataAndType(Uri.fromFile(temp), "application/vnd.android.package-archive");
            } else {
                Uri uri = UpdateFileProvider.getUriForFile(getAppContext(), "com.control.update.UpdateFileProvider", temp);
                intent.setDataAndType(uri, "application/vnd.android.package-archive");
            }
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
            getAppContext().startActivity(intent);
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.01.2019, 18:11:13 via Website

Hast du denn mal versucht, was passiert, wenn du die APK im Browser lädst und dann installieren willst?
Ich habe mir auch so ein AutoUpdate programmiert, allderings etwas weniger komfortabel.
Bei mir musste der User einen DownloadLink anklicken und die vom Browser heruntergeladene APK dann installieren.
D.h. wenn es dich stört, müsstest du den etwas umständlichereren Weg gehen.
Bist du sicher, dass die DataTypes für APKs in den Intents richtig angegeben sind.
Ansonster mach mal ein ActionIntent nur auf ein generellen FileÖffnen und wähle den PaketManager manuell aus.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
FrankenDerStein
  • Forum-Beiträge: 25

11.01.2019, 13:39:18 via Website

Danke für deinen Beitrag, ich habe das Problem gefunden.
Es war nicht wie vermutet die Update Logik. Ich hatte übersehn dass ein Aufruf der Hauptseite versucht wird.

Intent selector = new Intent("android.intent.action.MAIN");
selector.addCategory("android.intent.category.HOME");
selector.setComponent(new ComponentName("android", "com.android.internal.app.ResolverActivity"));
startActivity(selector);

Jetzt muss ich dafür eine Lösung finden.

Hilfreich?
Kommentieren