German Anwendung öffnen mit ...

psciga

Active Member
Licensed User
Longtime User
Hallo zusammen,

leider komme ich immer noch nicht mit der Suchfunktion des Forums klar, darum hier ein neuer Thread.

Wier bekomme ich meine App dazu, mittels "Intent1.ACTION_VIEW" die Standardanwendung zu öffnen? Zur Erklärung:

Folgender Codeschnipsel soll den etoolbox Viewer starten.

B4X:
Sub dateiOeffnen (pfad As String, datei As String) As Int
    Intent1.Initialize(Intent1.ACTION_VIEW,"file://" & File.Combine(pfad,datei))
    Intent1.SetComponent("android/com.android.internal.app.ResolverActivity")
    Intent1.SetType("application/dwg")
    StartActivity(Intent1)
End Sub

Macht es aber nicht, ich werde immer nach der App gefragt, auch wenn ich "immer" wähle.

Aus dem Dateimanager wird der etoolbox Viewer geöffnet, weil ich das mittels "Aktion durchführen mit" und dann der Option "immer" so zugeordnet habe.

Mittlerweile habe ich zwar eine Lösung für mich gefunden:

B4X:
Sub dateiOeffnen (pfad As String, datei As String)' As Int
    Intent1.Initialize(Intent1.ACTION_VIEW,"file://" & File.Combine(pfad,datei))
    Intent1.SetComponent("com.etoolbox.viewer")
    Intent1.SetType("application/dwg")
    StartActivity(Intent1)
End Sub

Hier gebe ich die App explizit an. Aber was, wenn jemand eine andere App zum Öffnen von DWG Files verwendet und den etools Viewer nicht auf dem Phone hat?

Vielen Dank im Voraus!

MfG - Peter
 

DonManfred

Expert
Licensed User
Longtime User
Entweder Du definierst in deinen App-Infos das diese App benötigt wird oder Du könntest mithilfes des PacketManagers dem User selber eine App auswählen lassen, die er benutzen will.

bzw Du könntest mittels

B4X:
Dim pm As PackageManager ' Ist Teil der PHONE-Lib
Dim Intent1 As Intent
Intent1.Initialize(Intent1.ACTION_VIEW, "file://")
Intent1.SetType("application/dwg") ' text/*
For Each cn As String In pm.QueryIntentActivities( Intent1)
  Log(cn)
Next

prüfen, ob es überhaupt ein Programm für dwgs gibt und wenn ja, welche(s). Da haste dann auch gleich den zu benutzenden Namen.

PS: Keine ahnung ob der code so passt aber mit application/pdf hat der mir meinen pdf-viewer ausgegeben im log. Code habe ich hier entnommen.

Evtl. ist dies ja auch interessant
 

psciga

Active Member
Licensed User
Longtime User
Hi Manfred,

danke für Deine Bemühungen! Ja, der Weg scheint interessant. Den Code habe ich gleich mal ausprobiert. Interessanterweise liefert er mir alle installierten DWG-Viewer Apps mit Ausnahme der besagten etoolbox.

Allerdings hast Du mich auf eine andere Idee gebracht ...

Nochmal zum Problem. Der user verknüft einen Dateityp (hier also DWG, ein ähnliches Problem gibt es mit pdf) mit einer Anwendung und bekommt beim Aufruf durch meine App dennoch immer wieder die Frage gestellt, welche App er verwenden will. Das nervt erstens wenn es schnell gehen soll und verunsichert außerdem den ungeübten Anwender.

Mein Denkansatz ist also folgender. Die App verfügt eh über eine INI-Datei. Darin wird die emphollene App gespeichert. Sollte das zu einem Fehler führen (weil nicht installiert) bekommt er die Möglichkeit aus der Liste (erzeugt von Deinem Code) die Alternativen angezeigt und kann eine Auswählen, die dann in die INI-Datei kommt. Somit sollte der Fall nur einmal auftreten.

Hoffentlich finde ich heute noch Zeit, das mal zu testen.

Nochmals danke und viele Grüße aus dem vernieselten Sachsen - Peter
 

DonManfred

Expert
Licensed User
Longtime User
Danke für Deine Bemühungen! Ja, der Weg scheint interessant. Den Code habe ich gleich mal ausprobiert. Interessanterweise liefert er mir alle installierten DWG-Viewer Apps mit Ausnahme der besagten etoolbox.

Vermutlich hat die app sich selber nicht "registriert" dafür dass sie für solche Dateien zuständig ist. Android stellt nur Programme zur Auswahl die sich selber für einen bestimmten Dateeityp oder Intent registriert haben.

Ich meine hier irgendwo gelesen zu haben das man sich, wenn man eine bestimmte Art von Dateien öffnen will und man möchte das das eigene Programm hier (also von Android) angeboten wird, selber in so eine Art Broadcast-Liste eintragen.
Genaues kann ich dazu nicht sagen weil ich das selber noch nicht probiert habe bzw bisher nie vor diesem Problem stand.

Aber man liest ja so einiges erstmal bevor man entscheidet das diese Info nichts für einen ist. Zumindest geht mir das so. Und auch wenn man etwas nur überflogen hat so bleiben "Brocken" hängen davon. Wie eben besagtes Broadcast ;-) Ich meine das wäre im zuge dessen gewesen das man sich in eine Broadcastliste eintragen kann wenn eine SMS eintrifft. Es wird dann ein intent der eigenen App gestartet und man bekommt die SMS übergeben.

Edit: Guckst du hier

Noch ein Edit :): Das hier ist auch interessant finde ich

Hier noch ein paar Links :D
List of all Broadcast Intent actions. API 17
Internal Broadcasts Monitor
 
Last edited:
Top