Kann ich eine URL von Android Live Wallpaper öffnen?
Frage
Ich bin neu in Android ... habe Probleme, eine URL von einem lebenden Tapeten zu öffnen.
Code zum Öffnen der URL:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
Activity activity = new Activity();
activity.startActivity(intent);
Aber ich bekomme nur eine NullPointerexception:
java.lang.NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:2749)
at android.app.Activity.startActivity(Activity.java:2855)
at org.amble.graphics.HToolbar$URLEntry.run(HToolbar.java:81)
at org.amble.graphics.HToolbar.doTouch(HToolbar.java:188)
at com.mobstar.undeadpirate.autopaper.PiratePaperPainter.doTouchEvent(PiratePaperPainter.java:245)
at com.mobstar.undeadpirate.autopaper.LiveWallpaperService$WallpaperEngine.onTouchEvent(LiveWallpaperService.java:117)
at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:832)
at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:45)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Mein Manifest sieht so aus
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" package="com.nubjub.wallpapertest">
<application
android:label="@string/app_name" android:debuggable="true" android:icon="@drawable/icon">
<service
android:name="WallpaperTest"
android:enabled="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter android:priority="1" >
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/wallpaper" />
</service>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:minSdkVersion="7" />
</manifest>
Lösung
Natürlich können Sie einen Browser von einem Live -Tapete eröffnen! Der erforderliche Code ist:
Intent myIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.example.com"));
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myIntent);
Das einzige, was Sie setzen müssen Intent.setFlags(int flag)
Linie.
Sie müssen keine neue Aktivität instanziieren. Ich schlage vor, Sie sollten sich über den Lebenszyklus von Android-Aktivitäten informieren und genau die Absichten tun!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow