2016-11-05 48 views
0

這顯示了應用程序框來選擇圖像或使用相機拍照。如果我選擇相機,則讓我拍照,但沒有返回或保存選項。我更新了發佈活動結果代碼的答案。android - 選擇意圖

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     switch (requestCode) 
     { 
      case 1: 
       if (data != null) 
       { 
        Log.e("TAG", "Only called when a image from gallery is selected"); 
       } 
       else 
       { 
        Log.e("TAG", "Data is null"); 
       } 
       break; 

     } 
    } 
    private void ChooseImage() 
{ 

    // Create gallery intent 
    Intent _intentGallery = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    _intentGallery.setAction(Intent.ACTION_PICK); 
    _intentGallery.putExtra("return-data", true); 

    // startActivityForResult(_intentGallery, 1); 


    // Create camera intent 
    Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

    // Create chooser 
    Intent chooser = Intent.createChooser(galleryIntent, getString(R.string.choose_an_application)); 

    // Create list of gallery intents 
    List<Intent> galleryIntents = new ArrayList<Intent>(); 

    // Add intents to list 
    PackageManager pm = getApplicationContext().getPackageManager(); 
    for (ResolveInfo ri: pm.queryIntentActivities(_intentGallery, PackageManager.MATCH_DEFAULT_ONLY)) 
    { 
     Intent intent = pm.getLaunchIntentForPackage(ri.activityInfo.packageName); 
     intent.setAction(Intent.ACTION_PICK); 
     intent.putExtra("return-data", true); 
     galleryIntents.add(intent); 
    } 

    // Show dialog 
    chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, galleryIntents.toArray(new Parcelable[] {})); 
    startActivityForResult(chooser, 1); 
} 

清單權限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

回答

0

您必須實現onActivityResult。然後你可以獲得數據。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     mImageView.setImageBitmap(imageBitmap); 
    } 
} 

在這種情況下,REQUEST_IMAGE_CAPTURE是1,你定義它,所以它更改爲1 不要忘了艙單規則uses-feature

查看更多:https://developer.android.com/training/camera/photobasics.html