簡體   English   中英

Android 從圖庫中選擇圖像 java.lang.NullPointerException:嘗試在空對象上調用虛擬方法“boolean Bitmap.compress()”

[英]Android Select Image From Gallery java.lang.NullPointerException: Attempt to invoke virtual method 'boolean Bitmap.compress()' on a null object

我正在創建從選擇庫到服務器的圖像上傳。 一周前一切正常,但今天沒有工作並出現此錯誤。

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { dat=content://media/external/images/media/61489 flg=0x1 (has extras) }} to activity {com.example.pmb/com.example.pmb.Uploadlagi}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4619)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4661)
    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1957)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
    at com.example.pmb.Uploadlagi.BitMapToString(Uploadlagi.java:140)
    at com.example.pmb.Uploadlagi.onActivityResult(Uploadlagi.java:134)

這里的腳本

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 2) {
            Uri selectedImage = data.getData();
            String[] filePath = { MediaStore.Images.Media.DATA };
            Cursor c = getContentResolver().query(selectedImage,filePath, null, null, null);
            c.moveToFirst();
            int columnIndex = c.getColumnIndex(filePath[0]);
            String picturePath = c.getString(columnIndex);
            c.close();
            Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
            IDProf.setImageBitmap(thumbnail);
            BitMapToString(thumbnail);   <------- error mention to this line
        }
    }
}
public String BitMapToString(Bitmap userImage1) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    userImage1.compress(Bitmap.CompressFormat.JPEG, 80, baos);
    byte[] b = baos.toByteArray();
    Document_img1 = Base64.encodeToString(b, Base64.DEFAULT);
    return Document_img1;
}

什么問題? 什么必須修復?

ps:我在三星A6上測試

我找到了解決方案,當我向上滾動日志時,我發現未授予權限,因此在 onCreate() 函數中,我創建了權限請求。

if (ContextCompat.checkSelfPermission(Uploadlagi.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(Uploadlagi.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    }

並創建一個覆蓋函數,

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode==1){
        if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(getApplicationContext(),"Ijin diperbolehkan, silahkan pilih gambar",Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(),"Ijin gagal, Anda tidak bisa upload dokumen",Toast.LENGTH_LONG).show();
        }
        return;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM