2014-08-29 35 views
0

這裏是像機碼失敗遞送結果ResultInfo {誰= NULL,請求= 2,結果爲0,數據= NULL}相機

private void selectImage(){ 

final int Camera_CPTURE = 1; 

try { 
    Intent capture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(capture,Camera_CPTURE); 
}catch (ActivityNotFoundException e) 
{ 
    String error ="opps ur devices doesn't support capturing"; 
    Toast toast = Toast.makeText(this,error,Toast.LENGTH_SHORT); 
    toast.show(); 
} 
} 




protected void onActivityResult(int requestCode, int resultCode, Intent data) { 


    if (resultCode == RESULT_OK) { 
     picUri = data.getData(); 
     performCrop(); } 
    else if(requestCode == PIC_CROP) 
    { 
     Bundle extra = data.getExtras(); 
     Bitmap thePic = extra.getParcelable("data"); 
     ImageView picView = (ImageView)findViewById(R.id.imageView); 
     picView.setImageBitmap(thePic); 
    } 

    } 

private void performCrop() { 
    try { 
     Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
     cropIntent.setDataAndType(picUri,"image/*"); 
     cropIntent.putExtra("crop","true"); 
     cropIntent.putExtra("aspectX",1); 
     cropIntent.putExtra("aspectY",1); 
     cropIntent.putExtra("outputX",200); 
     cropIntent.putExtra("outputY",200); 
     cropIntent.putExtra("return-data",true); 
     startActivityForResult(cropIntent,PIC_CROP); 

    }catch (ActivityNotFoundException e) 
    { 
     String error ="opps ur devices doesn't support capturing"; 
     Toast toast = Toast.makeText(this,error,Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 





@Override 
public void onClick(View view) { 
    if(view.getId()==R.id.button){ 
     selectImage(); 

    } 

} 
} 

和日誌是這裏

[java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, 

result=0, data=null} to activity 

{com.gurucharan.studentdatabase/com.gurucharan.studentdatabase.MyActivity}:     

java.lang.NullPointerException 

at android.app.ActivityThread.deliverResults(ActivityThread.java:3007) 

at android.app.ActivityThread.handleSendResult(ActivityThread.java:3050) 

at android.app.ActivityThread.access$1100(ActivityThread.java:127) 

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188) 

at android.os.Handler.dispatchMessage(Handler.java:99) 

at android.os.Looper.loop(Looper.java:137) 

at android.app.ActivityThread.main(ActivityThread.java:4448) 

at java.lang.reflect.Method.invokeNative(Native Method) 

at java.lang.reflect.Method.invoke(Method.java:511) 

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 

at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.NullPointerException 

at com.gurucharan.studentdatabase.MyActivity.onActivityResult(MyActivity.java:61) 

at android.app.Activity.dispatchActivityResult(Activity.java:4649) 

at android.app.ActivityThread.deliverResults(ActivityThread.java:3003) 
  
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3050) 
  
at android.app.ActivityThread.access$1100(ActivityThread.java:127) 
  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188) 
  
at android.os.Handler.dispatchMessage(Handler.java:99) 
  
at android.os.Looper.loop(Looper.java:137) 
  
at android.app.ActivityThread.main(ActivityThread.java:4448) 
  
at java.lang.reflect.Method.invokeNative(Native Method) 
  
at java.lang.reflect.Method.invoke(Method.java:511) 
  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 
  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 
  
at dalvik.system.NativeStart.main(Native Method) 

08-29 14:40:13.503 1819-2133/? E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!! 

08-29 14:40:13.503 1819-2133/? E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!! 

08-29 14:40:13.503 2053-2053/? E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!! 

08-29 14:40:14.274 10409-10409/? E/wpa_supplicant﹕ RX ctrl_iface - hexdump_ascii(len=11)] 

回答

2
if(requestCode==Camera_CPTURE && resultCode=RESULT_OK && data!=null) 
    { 

    } 
1

我希望這個代碼有用..

private String selectedImagePath = ""; 
    final private int PICK_IMAGE = 1; 
    final private int CAPTURE_IMAGE = 2; 
    private String imgPath; 

private void selectImage() { 

AlertDialog.Builder builder = new AlertDialog.Builder(
     ProfileActivity.this); 
// builder.setTitle("Choose Image Source"); 
builder.setItems(new CharSequence[] { "Take a Photo", 
     "Choose from Gallery" }, 
     new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch (which) { 
       case 0: 
        Intent intent1 = new Intent(
          MediaStore.ACTION_IMAGE_CAPTURE); 
        intent1.putExtra(MediaStore.EXTRA_OUTPUT, 
          setImageUri()); 
        startActivityForResult(intent1, CAPTURE_IMAGE); 
        break; 
       case 1: 
        // GET IMAGE FROM THE GALLERY 
        Intent intent = new Intent(); 
        intent.setType("image/*"); 
        intent.setAction(Intent.ACTION_GET_CONTENT); 
        startActivityForResult(
          Intent.createChooser(intent, ""), 
          PICK_IMAGE); 
        break; 
       default: 
        break; 
       } 
      } 
     }); 
builder.show(); 
} 


public Uri setImageUri() { 

File file = new File(Environment.getExternalStorageDirectory(), "image" + new  Date().getTime() + ".png"); 
Uri imgUri = Uri.fromFile(file); 
this.imgPath = file.getAbsolutePath(); 
return imgUri; 
} 


public String getImagePath() { 
    return imgPath; 
} 

onActivityForResultSetMethod

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (resultCode != Activity.RESULT_CANCELED) { 
if (requestCode == PICK_IMAGE) { 
    selectedImagePath = getAbsolutePath(data.getData()); 
    System.out.println("path" + selectedImagePath); 
    imageView.setImageBitmap(decodeFile(selectedImagePath)); 

} else if (requestCode == CAPTURE_IMAGE) { 
    selectedImagePath = getImagePath(); 
    System.out.println("path" + selectedImagePath); 
    imageView.setImageBitmap(decodeFile(selectedImagePath)); 


    } else { 
    super.onActivityResult(requestCode, resultCode, data); 
    } 
    } 
} 


public Bitmap decodeFile(String path) { 
try { 
     // Decode image size 
     BitmapFactory.Options o = new BitmapFactory.Options(); 
     o.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(path, o); 
    // The new size we want to scale to 
     final int REQUIRED_SIZE = 70; 

     // Find the correct scale value. It should be the power of 
    // 2. 
     int scale = 1; 
    while (o.outWidth/scale/2 >= REQUIRED_SIZE 
      && o.outHeight/scale/2 >= REQUIRED_SIZE) 
     scale *= 2; 

     // Decode with inSampleSize 
    BitmapFactory.Options o2 = new BitmapFactory.Options(); 
     o2.inSampleSize = scale; 
    return BitmapFactory.decodeFile(path, o2); 
    } catch (Throwable e) { 
    e.printStackTrace(); 
    } 
    return null; 
    } 


public String getAbsolutePath(Uri uri) { 
String[] projection = { MediaColumns.DATA }; 

    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    if (cursor != null) { 
     int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } else 
    return null; 
    } 
+0

Thnks很多這樣的代碼,並獲得成功 – 2014-08-29 15:20:03

+0

我有問題IAM建立一個學生數據庫,以便其實例,我應該從ISIT獲取圖像從ImageView的或存儲在設備中的數據圖像 – 2014-08-29 15:35:39

0

如果妳得到科特林錯誤只是標誌着數據意圖爲@nullable通過增加? Intent類型聲明之後。因此,它應該像這樣:

data: Intent?. 
相關問題