代码之家  ›  专栏  ›  技术社区  ›  Stuart Axon

我可以打开Android Live墙纸的URL吗?

  •  3
  • Stuart Axon  · 技术社区  · 15 年前

    我刚接触安卓系统…无法从实时壁纸中打开URL。

    打开URL的代码:

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

    但我只是得到一个空指针异常:

     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> 
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   BeRecursive    15 年前

    当然,你可以从实况壁纸打开浏览器!所需代码为:

    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活动生命周期和确切的意图做什么!

    推荐文章