.apk direkt von einer Website aus installieren

R

RED-BARON

Fortgeschrittenes Mitglied
19
Hallo Ihrs :cool2:

habe nur folgendes gefunden im Forum

[OFFURL]https://www.android-hilfe.de/htc-hero-t-mobile-g2-touch-forum/5860-apk-direkt-vom-einer-website-aus-installieren-geloest.html[/OFFURL]

was aber nicht ganz das ist was ich will.

Meine App soll eine OnlineUpdate selber laden und sich selbst aktualisieren.

Ich denk, man benötigt eine zweite App, welche das Update vom eigenen
Server läd und die bestehende App aktualisiert. Nur wie müsste diese
gestrickt sein ?

Oder einfach gefragt, wie installiert man programmatisch eine App :confused2:
und welche Voraussetzungen muss die "Update.apk" mitbringen, ausser
Netzwerkzugriff ?

Hab davon NULL Ahnung, bin für jeden Hinweis dankbar. Schönes WE. RB
 
automatisches updaten funktioniert nicht, höchstens du nutzt den kürzlich aufgekommenen exploit für silent installs aus, was aber eher eine schlechte idee ist.

Generell muss der user beim installieren einer app die benötigten Berechtigungen bestätigen. Da führt kein Weg daran vorbei.

Aber warum auch selbst updaten? Macht doch Android schon je nach Version mehr oder weniger automatisch....
 
Hallo , danke für die Antwort,


>Aber warum auch selbst updaten? Macht doch Android schon je nach
>Version mehr oder weniger automatisch....

Weil es eine eigene App ist deren Updates euf einem eignen Webserver
liegen - ausser reichweite eines Markets oder sonstiger bestehender
Strukturen. Von dem Exploid wusste ich nix und will sowas auch nicht
nutzen. Es würde mir schon reichen wenn ich wüsste, wie ich eine
APK "ausführen" kann damit der Installer hoch kommt und den User ab-
fragt ob die Anwendung überschrieben werden soll- so wie es iat wenn
ich die Apk vom Server per Browser lade und dann im Downloadverlauf
antippe und der Installer springt an.

So den, nun mal gelassen ins WE schlendern ;D
 
RED-BARON schrieb:
Oder einfach gefragt, wie installiert man programmatisch eine App :confused2:
und welche Voraussetzungen muss die "Update.apk" mitbringen, ausser
Netzwerkzugriff ?

Hab davon NULL Ahnung, bin für jeden Hinweis dankbar. Schönes WE. RB

20s google und du wüsstest es :scared:

Einfach den richtigen Intent mit nem Extra zu der .apk losschicken.
Ob du so auch die .apk updaten kannst, weiß ich nicht.
 
Ich will jetzt nix falsches sagen.

Aber ich kann mir vorstellen das es Android noch bringen wird das man per Remote Administrativ Apps updaten kann die nicht im Market sind.
Sozusagen das man das Handy einmal konfiguriert und es dann wie eine Art Firmen Market hat wo die Apps nach Upload aktualisiert werden.

Ansonsten scheint das Automatische Installieren von APK nicht möglich zu sein ohne das Handy zu Rooten denn alle Markets nebem dem orginal haben es nicht hin bekommen das die APK direkt aus der Market App installiert werden sondern nur durch Bestätigung über den Android Installer.

Gruß Kevin
 
Code:
[SIZE=2]URL sourceUrl = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] URL([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff][URL]http://anwendung.to/android/anwendung.apk[/URL][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
[LEFT][SIZE=2]Object data = sourceUrl.getContent();[/SIZE][/LEFT]
[SIZE=2]String fileName = sourceUrl.getFile(); [/SIZE]
[LEFT][SIZE=2]fileName = fileName.substring(fileName.lastIndexOf([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]'/'[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) + 1);[/SIZE]
[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]// create/open file in the 'data/data/<app [U]namespace[/U]>/files' directory[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
[LEFT][SIZE=2]FileOutputStream fos = openFileOutput(fileName, Context.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]MODE_PRIVATE[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2] | Context.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]MODE_WORLD_READABLE[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]);[/SIZE][/LEFT]
 
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] read = 0;[/SIZE][/LEFT]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]byte[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][] buffer = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]byte[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][512];[/SIZE]
[SIZE=2]BufferedInputStream bis = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] BufferedInputStream((InputStream)data);[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]do[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]{[/SIZE]
[SIZE=2]  read = bis.read(buffer);[/SIZE]
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2](read > 0){[/SIZE][SIZE=2]fos.write(buffer, 0, read);[/SIZE][SIZE=2]}[/SIZE]
 
[SIZE=2]}[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2](read != -1);[/SIZE]
 
[SIZE=2]Intent intent = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Intent();[/SIZE]
[SIZE=2]intent.setAction(android.content.Intent.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]ACTION_VIEW[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]); [/SIZE]
[SIZE=2]intent.setDataAndType(Uri.[I]parse[/I]([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"/data/data/anwendung.test/files/anwendung.apk"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]), [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"application/vnd.android.package-archive"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
[LEFT][SIZE=2]startActivity(intent);[/SIZE][/LEFT]

soweit hab ich mir den Code zusammengesucht, bekomme aber immer
noch diesen Fehler beim Aufruf: startActivity(intent);

ActivityNotFoundException: No Activity found to handle Intent

Der gleiche Fehler tritt auf wenn diese Variante verwendet wird

Intent intent = new Intent(Intent.ACTION_PACKAGE_INSTALL, Uri.parse("/data/data/anwendung.test/files/anwendung.apk"));
startActivity(intent);

:(
 
auf dem Emulator?
Vll. hat der nicht die System app, welche die Rechte besitzt, Anwendungen hinzuzufügen..
 
danke, Fr4gg0r.

Nein nicht nur auf dem Emulator - ich teste die App immer
auf Emulator UND HTC-Magic mit Android 1.5, auf beiden
zeigt sich identisches Verhalten. Ich muss wohl weitersuchen :huh:


nach etwas stöbern in den Dokus arbeitet obiger Code mit folgender
Änderung nun wie gewünscht !

fileName = "/data/data/anwendung.test/files/anwendung.apk";
intent.setDataAndType(Uri.parse("file://" + fileName), "application/vnd.android.package-archive");

Dabei aktualisiert sich die App selbst, es ist keine extra UpdateApp
notwendig !


Nochmal Danke, besonders für diesen Hinweis:
"Einfach den richtigen Intent mit nem Extra zu der .apk losschicken." :)
 
Zuletzt bearbeitet:

Ähnliche Themen

2
Antworten
6
Aufrufe
226
24559
2
R
Antworten
4
Aufrufe
713
Rapidoman
R
M
Antworten
2
Aufrufe
612
Mozart40
M
Zurück
Oben Unten