2010-06-16 5 views
3

Je suis nouveau android ... avoir du mal à essayer d'ouvrir une URL à partir d'un fond d'écran en direct ..Puis-je ouvrir une URL depuis Android Live Wallpaper?

code pour ouvrir l'URL:

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

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

Mais je reçois juste un 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) 

Mes regards manifeste comme celui-ci

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

Répondre

3

Bien sûr, vous pouvez o stylo un navigateur à partir d'un fond d'écran en direct! Le code requis est:

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

La seule chose que vous devez définir est que le fond d'écran en direct devrait être en mesure de commencer une nouvelle tâche que nous faisons via la ligne Intent.setFlags(int flag).

Vous n'avez pas besoin d'instancier une nouvelle activité, je vous suggère de lire sur le cycle de vie de l'activité Android et exactement ce que les intentions font!

+1

OP, notez que nulle part dans ce code il n'a dit 'new Activity().' Dans Android, le système d'exploitation sera (99% du temps) celui qui crée un composant (un 'Activity',' BroadcastReceiver') , 'Service', etc.) Si vous vous trouvez dire 'new ' alors vous êtes probablement en train de le faire mal :) – Hamy

+0

Cool, c'était mon premier androïde n'importe quoi ... donc je ne savais rien. Je vais essayer et récompenser le tout important ✔ si cela fonctionne demain. –

+0

OK, cocher ... s'avère que j'ai besoin de réorganiser mon code un peu, donc je peux appeler startActivity à partir du service. –

Questions connexes