2011-08-31 49 views
1

如何通過程序設置實時牆紙。我想爲我的設備設置一個指定的活動牆紙。我模仿LivePicker應用程序中的LiveWallpaperPreview.java。 我的代碼是:如何通過程序設置活動牆紙?

公共無效setLiveWallpaperClick(視圖v){

Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE); 
    intent.setClassName("com.android.wallpaper", "com.android.wallpaper.galaxy.GalaxyWallpaper"); 
try { 
    mWallpaperManager.getIWallpaperManager().setWallpaperComponent(
      intent.getComponent()); 

} catch (RemoteException e) { 
    e.printStackTrace(); 
    // do nothing 
} catch (RuntimeException e) { 
    e.printStackTrace(); 
} 
finish(); 

} 而在manifest.xml的權限是:

<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" /> 
    <uses-permission android:name="android.permission.BIND_WALLPAPER" /> 
    <uses-permission android:name="android.permission.SET_WALLPAPER" /> 

但它不能在工作我的應用程序。代碼是否正確?

+0

你是否用期望的壁紙替換當前壁紙?例如,如果你有另一個下載的壁紙,你知道他的包名,你可以通過你的應用程序設置一個? – Naskov

回答

3

謝謝!我找到了根本原因:代碼是正確的。但是apk必須推到/ system/app目錄,它可以工作。如果apk安裝在/ data/app中,則無法工作。我認爲/ system/app和/ data/app之間有一些不同的權限。

+0

所以你的解決方案? – Fakher

0

使用下面的代碼來設置自定義動態壁紙:

意向意圖=新 意圖(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(this,MyWallpaperService.class)); startActivity(意向);

與其他權限由@Judy

以上建議

這裏MyWallpaperService是自定義牆紙的服務。