How to get android lock screen wallpaper?

前端 未结 3 1520
时光取名叫无心
时光取名叫无心 2021-01-02 16:51

I use the code below to retrieve the android lock screen wallpaper on an android 8.1 phone:

WallpaperManager manager = WallpaperManager.getInstance(getActivi         


        
3条回答
  •  星月不相逢
    2021-01-02 17:29

    The code I was testing is similar to yours. I have tested it on Samsung A5 and LG Nexus 5X.

    MainActivity.java

    import android.Manifest;
    import android.annotation.SuppressLint;
    import android.app.WallpaperManager;
    import android.content.pm.PackageManager;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Build;
    import android.os.Bundle;
    import android.os.ParcelFileDescriptor;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
    
        public static final int REQUEST_CODE_EXTERNAL_STORAGE = 5;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                permission = Manifest.permission.READ_EXTERNAL_STORAGE;
            }
    
            if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this, new String[]{permission}, REQUEST_CODE_EXTERNAL_STORAGE);
            } else {
                retrieveLockScreenWallpaper();
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
            switch (requestCode) {
                case REQUEST_CODE_EXTERNAL_STORAGE: {
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        retrieveLockScreenWallpaper();
                    }
                }
            }
        }
    
        @SuppressLint("MissingPermission")
        private void retrieveLockScreenWallpaper() {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                WallpaperManager manager = WallpaperManager.getInstance(getApplicationContext());
                ParcelFileDescriptor descriptor = manager.getWallpaperFile(WallpaperManager.FLAG_LOCK);
                if (descriptor != null) {
                    Bitmap bitmap = BitmapFactory.decodeFileDescriptor(descriptor.getFileDescriptor());
                    ((ImageView) findViewById(R.id.imageView)).setImageBitmap(bitmap);
                }
            }
        }
    
    }
    

    manifest.xml

    
    
        
        
    
        
    
    
    

    .

    Result on LGE Nexus 5X (Android 8.1.0, API 27):

提交回复
热议问题