[Monkey] Android Java Browser Problem
Übersicht

![]() |
MidimasterBetreff: Android Java Browser Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
nachdem es hier nun immer wieder auch Antworten auf Fragen zu Java gibt, werde ich mein Problem hier mal reinstellen.
Ich möchte in einer Monkey App in Android den Browser rufen. Es gelingt mir auch schon mit folgendem Java-Code: Code: [AUSKLAPPEN] static void launchBrowser(String address) {
android.net.Uri uriUrl = android.net.Uri.parse(address); android.content.Intent launchBrowserActivity = new android.content.Intent(android.content.Intent.ACTION_VIEW, uriUrl); BBAndroidGame._androidGame._activity.startActivity(launchBrowserActivity); } Als Adresse kann ich sowas wie.... Code: [AUSKLAPPEN] Extern
#If TARGET="android" Function LaunchNativeBrowser:Void(address:String) = "SystemPeter.launchBrowser" #Endif Public ..... LaunchNativeBrowser("http://www.midimaster.de/temp/anleitung.html") übergeben und erhalte dann diese Seite in sich öffnenden Browser des Smartphone. Nun habe ich diese Datei auf die SD-Karte kopiert und mit dem Browser direkt geöffnet. Als Adresse habe ich eingegeben: file://sdcard/testA/anleitung.html Das klappt auch. Der Browser öffnet die Datei. Auch dass direkte Anklicken der Datei funktioniert. Es öffnet sogar den besonders schönen HTMLViewer. Aber... jeder Versuch diese Adresse mit der Monkey Funktion zu erreichen wird mit einem Absturz bestraft. Was mache ich falsch? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Ausgabe von LogCat wäre wohl ganz nützlich um herauszufinden was da schiefgeht. Die einzige Vermutung die ich habe ist, das du deiner App keine Berechtigung gegeben hast auf die SD Karte zuzugreifen? READ_EXTERNAL_STORAGE solltest du wohl brauchen. Hier sind noch ein paar mehr: http://developer.android.com/r...ssion.html
MfG ich |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
LogCat? Ich befürchte, bereits hier kenne ich mich zu wenig mit Java aus. Monkey V69 protokolliert ja mit, was das Smartphone so auf der Console ausgibt. Hier ist das Protokoll:
Zitat: BUILD SUCCESSFUL Total time: 18 seconds --------- beginning of /dev/log/main E/AndroidRuntime(11405): feature code ==> cannot open file E/StatusBarPolicy( 1536): ecio: 40 E/StatusBarPolicy( 1536): iconLevel: 4 E/SensorManager(11413): registerListener :: handle = 0 name= K2DM delay= 20000 Listener= com.monkey.BBMonkeyGame@40522b60 E/SensorManager(11413): =======>>>Sensor Thread RUNNING <<<======== E/SensorManager(11413): reg :: handle = 0 E/ (11413): Creating OpenGL 1.1 Session I/[Monkey](11413): Monkey Runtime Error : No Activity found to handle Intent { act=android.intent.action.VIEW dat=file://sdcard/testA/Anleitung.html } I/[Monkey](11413): C:/Monkey/ScoreTrainer/TestDpi.monkey<34> I/[Monkey](11413): C:/MonkeyPro69/modules/mojo/app.monkey<60> --------- beginning of /dev/log/system E/AndroidRuntime(11413): FATAL EXCEPTION: main E/AndroidRuntime(11413): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file://sdcard/testA/Anleitung.html } E/AndroidRuntime(11413): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409) E/AndroidRuntime(11413): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) E/AndroidRuntime(11413): at android.app.Activity.startActivityForResult(Activity.java:2827) E/AndroidRuntime(11413): at android.app.Activity.startActivity(Activity.java:2933) E/AndroidRuntime(11413): at com.monkey.SystemPeter.launchBrowser(MonkeyGame.java:2525) E/AndroidRuntime(11413): at com.monkey.c_Game.p_OnUpdate(MonkeyGame.java:2617) E/AndroidRuntime(11413): at com.monkey.c_GameDelegate.UpdateGame(MonkeyGame.java:2681) E/AndroidRuntime(11413): at com.monkey.BBGame.UpdateGame(MonkeyGame.java:550) E/AndroidRuntime(11413): at com.monkey.BBAndroidGame.UpdateGame(MonkeyGame.java:1196) E/AndroidRuntime(11413): at com.monkey.BBAndroidGame$GameTimer.run(MonkeyGame.java:782) E/AndroidRuntime(11413): at android.os.Handler.handleCallback(Handler.java:587) E/AndroidRuntime(11413): at android.os.Handler.dispatchMessage(Handler.java:92) E/AndroidRuntime(11413): at android.os.Looper.loop(Looper.java:130) E/AndroidRuntime(11413): at android.app.ActivityThread.main(ActivityThread.java:3687) E/AndroidRuntime(11413): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(11413): at java.lang.reflect.Method.invoke(Method.java:507) E/AndroidRuntime(11413): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) E/AndroidRuntime(11413): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) E/AndroidRuntime(11413): at dalvik.system.NativeStart.main(Native Method) E/liblog ( 1472): failed to call dumpstate E/ ( 1472): Dumpstate > /data/log/dumpstate_app_com_monkey_error E/Launcher( 1558): setWindowOpaque() E/StatusBarPolicy( 1536): ecio: 39 E/StatusBarPolicy( 1536): iconLevel: 4 Done. und dies hab ich als Permission freigegeben: Code: [AUSKLAPPEN] <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> obwohl man glaube ich für sowas gar nicht den direkten Zugriff auf die SD-Card braucht. Schließlich will ich ja nur einen anderen Prozeß aufrufen, der die Arbeit machen soll, oder? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kleines bisschen Googlen nach "No Activity found to handle Intent { act=android.intent.action.VIEW dat=file://sdcard/" (aus dem Stacktrace) hat mir diese Seite gegeben: http://stackoverflow.com/quest...id-browser
Vor allem die Antwort von junto hilft weiter. Dein Java-Code sollte etwa so ausschauen: Code: [AUSKLAPPEN] Uri uri = Uri.parse(address); Intent browserIntent = new Intent(Intent.ACTION_VIEW); browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); browserIntent.setData(uri); startActivity(browserIntent); Begründung: Startest du den Intent nur mit android.content.Intent launchBrowserActivity = new android.content.Intent(android.content.Intent.ACTION_VIEW, uriUrl); dann sagst du ihm nur, hier hast du eine Uri, such dir ein Programm aus, mit dem man das öffnen kann und zeigs mir an. Für http:// weiß er, da braucht man einen Browser, aber file:// kann ja alles sein. Mit browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); spezifizierst du, welches Programm das File öffnen soll. Ein Tipp am Rande: aufgrund der schieren Anzahl an Java- und Android-Entwickler, sind fast alle Probleme, auf die du stoßen kannst, schon mal wo behandelt worden. Google einfach nach der ersten Zeile im Java-Stacktrace und du findest meistens was. Ich hab nix dagegen, dir Fragen zu beantworten, im Gegenteil, aber vielleicht kriegst du so deine Antworten schneller und ohne Wartezeit ![]() |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ah! tolle antwort. klingt logisch, muss man aber erst mal draufkommen. Ich dachte natürlich das System würde sich auch die Extension anschauen, und von daher schon wissen, wer die Datei am besten anzeigen könnte.
Danke auch für den Tipp, nach der ersten Zeile des Stacktrace zu googlen. Da ich wie gesagt, nix von Java weiß, hatte ich bis jetzt an einen Fehler in Monkey-Teil geglaubt. Ich werde das gleich mal probieren.... Wow und tausend Dank! Es funzt! da werde ich gleich mal weitere Experimente machen... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group