在Android 8.1中访问WallpaperManager

时间:2017-12-27 16:26:17

标签: android wallpaper android-wallpaper

我正在构建一个启动器,需要访问用户当前的背景壁纸,但每次启动应用时,我都会在日志中收到警告W/WallpaperManager: No permission to access wallpaper, suppressing exception to avoid crashing legacy app.

以下是我使用的代码:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();

ImageView imageView = findViewById(R.id.background);
imageView.setImageDrawable(wallpaperDrawable);

此代码返回默认的股票背景图片,而不是我的实际背景图片。我已经注意到其他一些主流发射器(Evie,Launchair等)的这个问题,但它似乎只发生在我最近更新的Andorid 8.1设备上。

进一步深入了解实际的Android源代码,我发现了这个:

if (context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.O) {
    Log.w(TAG, "No permission to access wallpaper, suppressing"
    + " exception to avoid crashing legacy app.");
} else {
    // Post-O apps really most sincerely need the permission.
    throw e;
}

但我似乎无法找到所需的实际许可。

感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

对于Api 27(Android 8.1)设备,将Model.findOne({_id:req.body.id}, function(err,doc){ for(var i = 0; i < doc.keywords.length; i++){ if(doc.keywords[i].value == 1){ doc.keywords.splice(doc.keywords[i], 1); //does nothing doc.save() console.log(doc.keywords[i]) //Shows the correct keywords to be deleted. } }; }) 更改为27并向清单添加targetSdkVersion权限可解决此问题。