2016-12-31 104 views
0

我想在Android中使用gif圖像作爲壁紙,而且我正面臨一些問題。 我有以下錯誤:「未找到默認活動」。這個項目沒有錯誤,但是當我運行它時,我在Android Studio上遇到了這個錯誤。WallpaperService中的「默認活動未找到」

public class GIFWallpaperService extends WallpaperService { 

    @Override 
    public WallpaperService.Engine onCreateEngine() { 
     try { 
      Movie movie = Movie.decodeStream(
        getResources().getAssets().open("girl.gif")); 

      return new GIFWallpaperEngine(movie); 
     }catch(IOException e){ 
      Log.d("GIF", "Could not load asset"); 
      return null; 
     } 
    } 

    private class GIFWallpaperEngine extends WallpaperService.Engine { 

     private final int frameDuration = 20; 

     private SurfaceHolder holder; 
     private Movie movie; 
     private boolean visible; 
     private Handler handler; 

     public GIFWallpaperEngine(Movie movie) { 
      this.movie = movie; 
      handler = new Handler(); 
     } 

     @Override 
     public void onCreate(SurfaceHolder surfaceHolder) { 
      super.onCreate(surfaceHolder); 
      this.holder = surfaceHolder; 
     } 

     private Runnable drawGIF = new Runnable() { 
      public void run() { 
       draw(); 
      } 
     }; 


     private void draw() { 
      if (visible) { 
       Canvas canvas = holder.lockCanvas(); 
       canvas.save(); 
        // Adjust size and position so that 
        // the image looks good on your screen 
        canvas.scale(3f, 3f); 
        movie.draw(canvas, -100, 0); 
       canvas.restore(); 
       holder.unlockCanvasAndPost(canvas); 
       movie.setTime((int) (System.currentTimeMillis() % movie.duration())); 

       handler.removeCallbacks(drawGIF); 
       handler.postDelayed(drawGIF, frameDuration); 
      } 
     } 

     @Override 
     public void onVisibilityChanged(boolean visible) { 
      this.visible = visible; 
      if (visible) { 
       handler.post(drawGIF); 
      } else { 
       handler.removeCallbacks(drawGIF); 
      } 
     } 

     @Override 
     public void onDestroy() { 
      super.onDestroy(); 
      handler.removeCallbacks(drawGIF); 
     } 
    } 
} 

這是我的清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.hathy.gifwallpaper"> 

    <application android:allowBackup="true" android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"> 

     <service 
      android:name=".GIFWallpaperService" 
      android:enabled="true" 
      android:label="GIF Wallpaper" 
      android:permission="android.permission.BIND_WALLPAPER" > 
      <intent-filter> 
       <action android:name="android.service.wallpaper.WallpaperService"/> 

      </intent-filter> 
      <meta-data 
       android:name="android.service.wallpaper" 
       android:resource="@xml/wallpaper" > 
      </meta-data> 
     </service> 

    </application> 

    <uses-feature 
     android:name="android.software.live_wallpaper" 
     android:required="true" > 
    </uses-feature> 
</manifest> 
+0

沒有默認的活動 – shadygoneinsane

回答

0

清單文件在您更換此。

<intent-filter> 

    <action android:name="android.service.wallpaper.WallpaperService"/> 

    <category android:name="android.intent.category.LAUNCHER" /> 

</intent-filter> 

我認爲這將解決您的Problem.please檢查並讓我知道。

希望這將有助於..(?:

+0

仍然沒有工作「默認的活動沒有找到」錯誤 –

-1

運行 - >設置 - 編輯>啓動 設置爲「無」