May be SDCARD is mounted after some time of starting of ANDROID OS
Yes Right, so register action.MEDIA_MOUNTED
BroadcastReceiver to get broadcast when sd-card is mounted.
First Register BroadcastReceiver in AndroidManifest.xml :
<receiver
android:enabled="true"
android:exported="false"
android:name=".ExternalStorageInfoReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
</intent-filter>
</receiver>
In ExternalStorageInfoReceiver do your work inside onReceive method:
public class ExternalStorageInfoReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//change wallpaper here....
}
}