java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.content.ContentResolver.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)' on a null object reference
// 获得图片的代码
Cursor mCursor = contentResolver.query(mImageUri, null,
MediaStore.Images.Media.MIME_TYPE + "=? or "
+ MediaStore.Images.Media.MIME_TYPE + "=?",
new String[] { "image/jpeg", "image/png" },MediaStore.Images.Media.DATE_MODIFIED);
检查后发现,忘了初始化
contentResolver = this.getContentResolver();
ok再跑
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=24777, uid=10098 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1599)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
at android.content.ContentResolver.query(ContentResolver.java:506)
at android.content.ContentResolver.query(ContentResolver.java:441)
at com.example.pic.picmanager.MainActivity.getImage(MainActivity.java:34)
at com.example.pic.picmanager.MainActivity.onCreate(MainActivity.java:28)
at android.app.Activity.performCreate(Activity.java:6367)
嗯 忘记了权限的问题,在manifest文件里面加入一下代码,
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
并且注意在6.0以后文件存储等权限不仅需要在清单文件中注明,还需要动态申请;
public void requestPower() {
//判断是否已经赋予权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//申请权限,字符串数组内是一个或多个要申请的权限,1是申请权限结果的返回参数,在onRequestPermissionsResult可以得知申请结果
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,}, 1);
}
}
拿到了我需要的图片信息