JAVA代码:public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取文件夹路径 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/image"; //获取该目录下所有文件 File [] files = new File(path).listFiles(); //随机出图片文件下标 int index = (int)(Math.random() * files.length); //根据下标取出图片文件并设置成为模拟器背景 Bitmap bm = BitmapFactory.decodeFile(files[index].getAbsolutePath());
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取文件夹路径
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/image";
//获取该目录下所有文件
File [] files = new File(path).listFiles();
//随机出图片文件下标
int index = (int)(Math.random() * files.length);
//根据下标取出图片文件并设置成为模拟器背景
Bitmap bm = BitmapFactory.decodeFile(files[index].getAbsolutePath());
try {
setWallpaper(bm);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.archermind.activity"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
</manifest>
前提是要先把需要用的图片文件PUSH到sd卡中才可以访问,顺便借问一下大神,android不能直接访问本地磁盘中的文件么?我下面的代码files数组始终是null,获取不到路径下的文件public File [] getAllFiles(){
String path = "D:/image";
//获取文件夹目录
File directory = new File(path);
//获取目录下的所有图片文件数组
File [] files = directory.listFiles();
return files;
}
注册开机广播,开机时随机找张图片或用SharedPreferences记录上次的图片来算当前要显示的图片,显示就可以了。
public class RootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
System.out.println("onReceive BroadcastReceiver");
/*SharedPreferences内记录上次显示图片的索引或随机产生一个*/
/*设置背景图片*/
Bitmap bitMap = BitmapFactory.decodeResource(arg0.getResources(),R.drawable.pic1);
try {
arg0.getApplicationContext().setWallpaper(bitMap);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}
}注册广播和允许权限<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="root.start"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".RootActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="RootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
</manifest>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
package root.start;
import android.app.Activity;
import android.os.Bundle;
public class RootActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Bitmap bitMap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
// try {
// getApplicationContext().setWallpaper(bitMap);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
}
}