Чтобы использовать метод 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);
}
};
//uriOfItem = uri of your file
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, Google объявил, что SAF (инфраструктура доступа к хранилищу)заменит нормальные разрешения на хранение.Это означает, что даже если вы попытаетесь использовать разрешения на хранение, он предоставит доступ только к определенным типам файлов для файла и пути к файлу для использования
РЕДАКТИРОВАТЬ 2: после @ hetoan2комментарий Я снова проверил документацию и заметил, что ContentResolver является абстрактным, поэтому не может использовать ContentResolver.loadThumbnail()
в качестве вызова метода. Это означает, что в упражнении вы можете просто использовать следующее :
Bitmap albumArt = getContentResolver().loadThumbnail(uriOfFile, sizeOfAreaThatDisplaysThumbnail, cancellationSignalOrNull);