2012-12-05 116 views
1

我试图改变星系SIII(ICS操作系统)壁纸设备我使用1280x1440 JPEG图像这段代码:更改Android壁纸

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

.... 

Bitmap m = BitmapFactory.decodeByteArray(data, 0, data.length); 
WallpaperManager.getInstance(this).setBitmap(m); 

这是不工作,不如下工作也:

Bitmap m = BitmapFactory.decodeResource(getResources(), R.drawable.data_img); 
WallpaperManager.getInstance(this).setBitmap(m); 

但是当我使用这个:

WallpaperManager.getInstance(this).setResource(data_img); 

这是工作完美,但我的情况是下载一些图片数据将其保存为位图,然后将其设置为壁纸。所以加载资源在我的情况下不起作用。

任何帮助,在此先感谢。

+0

你得到任何异常?你有没有尝试把日志语句? –

+0

没有发生异常 – someone

回答

7

你可以找到文件here

你必须使用public void setStream (InputStream data)方法:

InputStream ins = new URL("absolute/path/of/image").openStream(); 
WallpaperManager wpm = WallpaperManager.getInstance(context); 
wpm.setStream(ins); 

,或者,如果你有像然后使用URI:

WallpaperManager wpm = WallpaperManager.getInstance(context); 
wpm.setResource(Uri.of.image); 
+0

@someone它有效吗? –

0

感谢@Tudor卢卡其做工精细..

ins = new URL("file://"+Environment.getExternalStorageDirectory()+"/gst/chhota.jpg").openStream(); 
WallpaperManager wpm = WallpaperManager.getInstance(getBaseContext()); 
wpm.setStream(ins); 
+0

嗯...什么新的比较接受的答案? – kleopatra

0

试试这个...

private static boolean connectToNewWifiConfig(final WifiConfiguration wc, Context context) 
    { 
     wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     boolean success = false; 
     final int actNetId = wifi.getConnectionInfo().getNetworkId(); 
     WifiInfo wifiInfo = wifi.getConnectionInfo(); 
     String prevNetworkSSID = wifiInfo.getSSID(); 
     int netId = wifi.addNetwork(wc); 
     if (netId != ApplicationConstants.INVALID_NETWORK_ID) 
     { 
      success = wifi.saveConfiguration(); 
     } 
     return success; 
    } 

它为我确保你能正确通过wificonfiguration,wificonfiguration将包含

wifiConfig = new WifiConfiguration(); 
     wifiConfig.SSID = "\"".concat(networkSSID).concat("\""); 
     wifiConfig.status = WifiConfiguration.Status.ENABLED; 
     wifiConfig.hiddenSSID = true; 
     wifiConfig.priority = 40;