有一个小部件可以在手机的外部存储器中显示最后保存的照片,有一个类从内存中读取照片:
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.provider.MediaStore;
public class PhotosReader {
public PhotosReader() {
}
public Bitmap getBitmap(Context context) {
String[] projection = new String[]{
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.DATA,
MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns.MIME_TYPE
};
Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null,
null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
Bitmap bm = null;
if (cursor.moveToFirst()) {
bm = BitmapFactory.decodeFile(cursor.getString(1));
}
return bm;
}
}
在标准活动应用程序上使用完全相同的类我只是制作该类的实例并调用该方法,所有内容都完美无缺:
PhotosReader PR = new PhotosReader();
ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.setImageBitmap(PR.getBitmap(this));
然而,当在WidgetProvider类上做类似的事情时:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.app_widget);
PhotosReader PR = new PhotosReader();
views.setImageViewBitmap(R.id.imageView, PR.getBitmap(context));
我的小部件只是空框架,没有任何图像。
授予读取外部存储的inb4权限。
我假设问题与上下文有关