Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改

Android13实现

替换默认桌面壁纸:

将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式)

替换默认锁屏壁纸:

将图片资源放入vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable/default_lock_wallpaper.*

--- a/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -1975,6 +1975,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
         mFaceRunningState = BIOMETRIC_STATE_STOPPED;
     }
 
+    public Context bsContext(){
+        return mContext;
+    }
+
     @VisibleForTesting
     @Inject
     protected KeyguardUpdateMonitor(
diff --git a/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java b/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
old mode 100644
new mode 100755
index 8793a57e4ef..c5963cec350
--- a/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
+++ b/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
@@ -51,9 +51,12 @@ import libcore.io.IoUtils;
 
 import java.io.PrintWriter;
 import java.util.Objects;
-
+import android.content.Context;
 import javax.inject.Inject;
-
+import com.android.systemui.R;
+import java.io.IOException;
+import android.os.SystemProperties;
+import android.provider.Settings;
 /**
  * Manages the lockscreen wallpaper.
  */
@@ -75,7 +78,7 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
     // users.
     private UserHandle mSelectedUser;
     private AsyncTask<Void, Void, LoaderResult> mLoader;
-
+    private Context mContext;
     @Inject
     public LockscreenWallpaper(WallpaperManager wallpaperManager,
             @Nullable IWallpaperManager iWallpaperManager,
@@ -98,6 +101,7 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
                 Log.e(TAG, "System dead?" + e);
             }
         }
+        mContext=mUpdateMonitor.bsContext();
     }
 
     public Bitmap getBitmap() {
@@ -115,6 +119,27 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
             mCached = true;
             mCache = result.bitmap;
         }
+       if (mCache == null && Settings.System.getInt(mContext.getContentResolver(),"is_first_boot",-1)==-1) {
+            Settings.System.putInt(mContext.getContentResolver(),"is_first_boot",1);
+            try {
+                mWallpaperManager.setStream(
+                        mContext.getResources().openRawResource(R.drawable.default_lock_wallpaper),
+                        null,
+                        true,
+                        WallpaperManager.FLAG_LOCK);
+
+                result = loadBitmap(mCurrentUserId, mSelectedUser);
+                if (result.success) {
+                    mCached = true;
+                   // mUpdateMonitor.setHasLockscreenWallpaper(result.bitmap != null);
+                    mCache = result.bitmap;
+                }
+            } catch (IOException e) {
+                //Log.e(TAG, "can not set default lockscreen wallpaper");
+            }
+        }
         return mCache;
     }

Android9实现

替换默认桌面壁纸:

将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式)

替换默认锁屏壁纸:

将图片资源放入vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable/default_lock_wallpaper11.*

--- a/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
+++ b/ap/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
@@ -42,9 +42,11 @@ import android.util.Log;
 import com.android.keyguard.KeyguardUpdateMonitor;
 
 import libcore.io.IoUtils;
-
+import com.android.systemui.R;
 import java.util.Objects;
-
+import java.io.IOException;
+import android.os.SystemProperties;
+import android.provider.Settings;
 /**
  * Manages the lockscreen wallpaper.
  */
@@ -64,10 +66,13 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
     // users.
     private UserHandle mSelectedUser;
     private AsyncTask<Void, Void, LoaderResult> mLoader;
+    
+    private Context mContext;
 
     public LockscreenWallpaper(Context ctx, StatusBar bar, Handler h) {
         mBar = bar;
         mH = h;
+        mContext = ctx;
         mWallpaperManager = (WallpaperManager) ctx.getSystemService(Context.WALLPAPER_SERVICE);
         mCurrentUserId = ActivityManager.getCurrentUser();
         mUpdateMonitor = KeyguardUpdateMonitor.getInstance(ctx);
@@ -97,6 +102,27 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
             mUpdateMonitor.setHasLockscreenWallpaper(result.bitmap != null);
             mCache = result.bitmap;
         }
+        //zya add
+       if (mCache == null && Settings.System.getInt(mContext.getContentResolver(),"is_first_boot",-1)==-1) {
+            Settings.System.putInt(mContext.getContentResolver(),"is_first_boot",1);
+            try {
+                mWallpaperManager.setStream(
+                        mContext.getResources().openRawResource(R.drawable.default_lock_wallpaper11),
+                        null,
+                        true,
+                        WallpaperManager.FLAG_LOCK);
+
+                result = loadBitmap(mCurrentUserId, mSelectedUser);
+                if (result.success) {
+                    mCached = true;
+                    mUpdateMonitor.setHasLockscreenWallpaper(result.bitmap != null);
+                    mCache = result.bitmap;
+                }
+            } catch (IOException e) {
+                //Log.e(TAG, "can not set default lockscreen wallpaper");
+            }
+        }
+        //zya end
         return mCache;
     }

Android设置桌面壁纸及恢复默认墙纸,程序中将创建一个存储壁纸图片资源的id数组,定义被选中的图片在id数组中的索引,需要自定义一个BaseAdapter,然后:   ImageView iv = new ImageView(Sample_12_2.this);//新建一个ImageView   iv.setBackgroundResource(imgIds[position]);//设置ImageView的背景图片   iv.setScaleType(ImageView.ScaleType.CENTER_CROP);   iv.setLayoutParams(new Gallery.LayoutParams(120, 120));//设置相框中元素的大小   将设置壁纸和恢复壁纸的功能写入按钮监听事件中,通过单击按钮来激活这两个功能:   设置ImageView为当前墙纸:   Button btnGetWall = (Button)findViewById(R.id.getWall);//获得Button对象   btnGetWall.setOnClickListener(new View.OnClickListener() {//为Button添加OnClickListener监听器   @Override   public void onClick(View v) {    ImageView iv = (ImageView)findViewById(R.id.currWall);    iv.setBackgroundDrawable(getWallpaper()); //设置ImageView显示的内容为当前墙纸   }   恢复默认壁纸:   setContentView(R.layout.main);//设置当前屏幕   Button btnClearWall = (Button)findViewById(R.id.clearWall);//获得Button对象   btnClearWall.setOnClickListener(new View.OnClickListener() {//添加OnClickListener监听器   @Override   public void onClick(View v) {//重写onClick方法   try {    Sample_12_2.this.clearWallpaper();//还原手机壁纸   } catch (IOException e) {//捕获并打印异常    e.printStackTrace();   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值