2017-04-13 13 views
0

写真をキャプチャしてトリミングしたり、画像を切り抜いたりするアプリケーションを実装しようとしましたが、アンドロイド4.4で正常に動作しましたが、別のデバイス5.1でテストしようとすると、次のメッセージで保存オプションを選択してくださいunfortunately gallery has stopped 次のコードは、トリミングを開始する方法です。ギャラリーが停止しました

public void ImageCropFunction() { 
    try { 
     CropIntent = new Intent("com.android.camera.action.CROP"); 
     CropIntent.setDataAndType(uri, "image/*"); 
     CropIntent.putExtra("crop", "true"); 
     CropIntent.putExtra("scaleUpIfNeeded", true); 
     CropIntent.putExtra("return-data", true); 
     startActivityForResult(CropIntent, 1); 
    } catch (ActivityNotFoundException e) { 

    } 
    } 

とカメラ

public void ClickImageFromCamera() { 

    CamIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

    file = new File(Environment.getExternalStorageDirectory(), 
     "file" + String.valueOf(System.currentTimeMillis()) + ".jpg"); 
    uri = Uri.fromFile(file); 
    CamIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri); 
    CamIntent.putExtra("return-data", true); 
    startActivityForResult(CamIntent, 0); 
    } 

とギャラリー

public void GetImageFromGallery() { 

    GalIntent = new Intent(Intent.ACTION_PICK, 
     android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(Intent.createChooser(GalIntent, "Select Image From Gallery"), 2); 
    } 

public void EnableRuntimePermission() { 
    if (ActivityCompat.shouldShowRequestPermissionRationale(StartUp.this, 
     Manifest.permission.CAMERA)) { 
     Toast.makeText(StartUp.this, "CAMERA permission allows us to Access CAMERA app", Toast.LENGTH_LONG).show(); 
    } else { 
     ActivityCompat.requestPermissions(StartUp.this, new String[]{ 
      Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, 
      Manifest.permission.READ_EXTERNAL_STORAGE,}, RequestPermissionCode); 
    } 
    } 

とのget結果のために使用した時間のアクセス許可を実行する要求からピック映像用からテイク画像についてピックイマのGEまたは要求許可

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 0 && resultCode == RESULT_OK) { 
     ImageCropFunction(); 
    } else if (requestCode == 2) { 
     if (data != null) { 
     uri = data.getData(); 
     ImageCropFunction(); 
     } 
    } else if (requestCode == 1) { 
     if (data != null) { 
     Bundle bundle = data.getExtras(); 
     Bitmap bitmap = bundle.getParcelable("data"); 
     this.bitmap = bitmap; 
     imageView.setImageBitmap(bitmap); 
     buttonDetect.setVisibility(View.VISIBLE); 
     } 
    } 
    } 

Logcatがクラッシュした後すべての問題は、この

START INPUT: com.android.internal.policy.impl.PhoneWindow$DecorView 

を表示のみ発生示していない誰が助けることはできますか?

+0

'catch(ActivityNotFoundException e){ }'?空の?通常のe.printStackTrace()とe.getMessage()をユーザーに表示するToast()を入れます。今あなたのユーザーとあなたは何が起こっているのか分かりません。 – greenapps

+0

'と画像を取得した結果、または許可を要求した場合' onActivityResultを使用して権限を取得することはできません。もしあなたがそれを得るなら、それは呼び出されません。代わりにonRequestPermissionsResult()を実装してください。 – greenapps

+0

@greenapps for 'catch(ActivityNotFoundException e){}'試してみましたが問題は表示されず、トーストも表示されません。 許可を得るために私は許諾の有無を確認することを意味する – Azak

答えて

0

AndroidはIntent Cropを持っていませんが、同じデバイスは作物その他をサポートしていません。 私はthis libraryを作物に使用します。この問題を解決する。

関連する問題