为使用ContentResolver方法,请确保已安装最新的SDK和相关工具,并在您的代码中首先实例化ContentResolver对象,然后按照需求使用它:
public class MainActivity extends AppCompatActivity {
public ContentResolver resolver;
Bitmap albumArt;
Size size;
Uri uriOfItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resolver = new ContentResolver(this) {
@NonNull
@Override
public Bitmap loadThumbnail(@NonNull Uri uri, @NonNull Size size, @Nullable CancellationSignal signal) throws IOException {
return super.loadThumbnail(uri, size, signal);
}
};
size = new Size(100, 100);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
try {
albumArt = resolver.loadThumbnail(uriOfItem, size, null);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
编辑:关于你的第一个问题,如果 @Rj_Innocent_Coder 不介意我在这里引用他的评论:
作为 Android Q 上 scoped-storage 功能的一部分,谷歌宣布 SAF(存储访问框架)将取代普通的存储权限。这意味着即使您尝试使用存储权限,它也只会授予对特定类型的文件的访问权限,以供 File 和 file-path 使用。
编辑 2:在 @hetoan2 的评论后,我再次检查了文档,发现 ContentResolver 是抽象的,因此不能使用 ContentResolver.loadThumbnail()
作为方法调用。 这意味着在活动中,您也可以简单地使用以下内容::
Bitmap albumArt = getContentResolver().loadThumbnail(uriOfFile, sizeOfAreaThatDisplaysThumbnail, cancellationSignalOrNull);