Я конвертирую URL в Uri следующим образом
imgUrl = intent.getStringExtra(getString(R.string.selected_image));
Log.d(TAG, "Image URL" + imgUrl);
imageUri = Uri.parse(imgUrl) ;
Log.d(TAG, "Image URI" + imageUri);
затем передать его этой функции
BackgroundImageResize backgroundImageResize = new BackgroundImageResize(bitmap);
backgroundImageResize.execute(imageUri);
и BackgroundImageResize принимает аргументы как
public class BackgroundImageResize extends AsyncTask<Uri, Integer, byte[]>
теперь этот метод
Log.d(TAG, "doInBackground: megabytes before compression: " + mBitmap.getByteCount() / 1000000 );
bytes = getBytesFromBitmap(mBitmap, 100);
Log.d(TAG, "doInBackground: megabytes before compression: " + bytes.length / 1000000 );
возвращает эту ошибку
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getByteCount()' on a null object reference
в предыдущих беседах с действительно умным человеком был сделан вывод, что, возможно, Uri неверен
Как передать правильный Uri?
это doInBackground () на всякий случай
@Override
protected byte[] doInBackground(Uri... params) {
Log.d(TAG, "doInBackground: started.");
if(mBitmap == null){
try{
mBitmap = MediaStore.Images.Media.getBitmap(NextActivity.this.getContentResolver(), params[0]);
}catch (IOException e){
Log.e(TAG, "doInBackground: IOException: " + e.getMessage());
}
}
byte[] bytes = null;
Log.d(TAG, "doInBackground: megabytes before compression: " + mBitmap.getByteCount() / 1000000 );
bytes = getBytesFromBitmap(mBitmap, 100);
Log.d(TAG, "doInBackground: megabytes before compression: " + bytes.length / 1000000 );
return bytes;
}
Я подозреваю, что эта строка кода
mBitmap = MediaStore.Images.Media.getBitmap(NextActivity.this.getContentResolver(), params[0]);
не выполняет свою работу: P