【问题标题】:Can I open a URL from android Live Wallpaper?我可以从安卓动态壁纸打开一个 URL 吗?
【发布时间】:2010-06-16 17:56:38
【问题描述】:

我是 android 新手...尝试从动态壁纸打开 URL 时遇到问题..

打开网址的代码:

            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));

            Activity activity = new Activity();
            activity.startActivity(intent);

但我只是得到一个 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)

我的清单看起来像这样

<?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> 

【问题讨论】:

    标签: android url wallpaper


    【解决方案1】:

    当然,您可以从动态壁纸打开浏览器!所需的代码是:

    Intent myIntent = new Intent(Intent.ACTION_VIEW,
                                 Uri.parse("http://www.example.com"));
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(myIntent);
    

    您唯一需要设置的是动态壁纸应该能够启动我们通过Intent.setFlags(int flag) 行执行的新任务。

    您不需要实例化新的活动,我建议您阅读 android 活动的生命周期以及意图的确切作用!

    【讨论】:

    • OP,请注意,他在这段代码中没有提到new Activity(). 在 Android 中,操作系统将(99% 的时间)创建组件(Activity、@987654325 @、Service 等)。如果你发现自己说new &lt;component&gt;,那么你可能做错了:)
    • 酷,这是我的第一个安卓系统……所以我什么都不知道。我会试一试并奖励所有重要的✔如果它明天有效。
    • 好的,打勾……原来我需要重新排列我的代码,所以我可以从服务中调用 startActivity。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多