2016-12-19 12 views
2

アクティビティの結果を含む画像をトリミングするときに問題があります。私はdevice> 6の許可を設定しました。しかし、作物と作物の表示が成功すると、結果データはnullになります。 (imageReturnedIntent.getData()私たちnullとintentデータもnullです)。コード切り抜き画像です。AndroidクロップアクションgetData null with some device

public static Intent cropIntent(Uri inUri, int outputX, int outputY, 
            boolean isScale) { 
     Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
     cropIntent.setDataAndType(inUri, "image/*"); 
     cropIntent.putExtra("crop", "true"); 
     cropIntent.putExtra("aspectX", outputX > 0 ? outputX : 100); 
     cropIntent.putExtra("aspectY", outputY > 0 ? outputY : 100); 
     cropIntent.putExtra("outputX", outputX > 0 ? outputX : 100); 
     cropIntent.putExtra("outputY", outputY > 0 ? outputY : 100); 
     cropIntent.putExtra("scale", isScale); 
     File file = new File(Environment.getExternalStorageDirectory() + File.separator + "img.jpg"); 
     Uri mCropImagedUri = Uri.fromFile(file); 
     cropIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mCropImagedUri); 
     cropIntent.putExtra("return-data", true); 
     return cropIntent; 
    } 

それは問題であり、何

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
     if (callbackManager != null) { 
      callbackManager.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     } 

     switch (requestCode) { 
      case SELECT_PHOTO: 
       if (resultCode == RESULT_OK) { 

        Uri uriImage = imageReturnedIntent.getData(); 
        System.out.println(">>>> uri "+uriImage); 
       // CommonUtils.cropImage(uriImage,HomeActivity.this,SELECT_CROP_IMAGE); 
        startActivityForResult(CommonUtils.cropIntent(uriImage, 
          200, 200, true), SELECT_CROP_IMAGE); 
       } 
       break; 
      case SELECT_CROP_IMAGE: 
       if (resultCode == RESULT_OK) { 
       // Uri uri = imageReturnedIntent.getData(); 

        System.out.println(">>>>> "+imageReturnedIntent.getData()); 
        Bundle extras = imageReturnedIntent.getExtras(); 
        if (extras == null) { 
         System.out.println(">>>>> check intent"); 
         return; 
        } 
        // Bitmap bitMapScale = extras.getParcelable("data"); 
        Uri uri = extras.getParcelable(MediaStore.EXTRA_OUTPUT); 
        try { 
         Bitmap bitMapScale = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri); 
         System.out.println(">>>>>> check " + bitMapScale); 
         //  yourSelectedImage.recycle(); 
         // base64 
         String myBase64Image = CommonUtils.encodeToBase64(bitMapScale, Bitmap.CompressFormat.PNG, 100); 
         // bitMapScale.recycle(); 
         assert uri != null; 
         LocalStorage.getShareInstance().saveUriAvatar(uri.toString()); 
         LocalStorage.getShareInstance().saveBase64Image(myBase64Image); 
         UserModel userModel = LocalStorage.getShareInstance().getUserLogin(); 
         if (userModel == null) { 
          // if user have not login. 
          if (uiLeftMenu != null) { 
           uiLeftMenu.fillImage(uri); 
          } 
         } else { 
          System.out.println(">>>>>> check data"); 
          if (CommonUtils.isStringDataValid(myBase64Image)) { 

           upLoadImageToServerWithStringBase64(myBase64Image); 
          } 
         } 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 


       } 
       break; 
     } 
    } 

activitysultコードですか?

+1

いつかデフォルトのトリミングが機能しません。このライブラリを使用することができますhttps://github.com/biokys/cropimage/tree/master/simple-crop-image-lib –

+1

'com.android.camera.action.CROP'は正式にはサポートされていません。作業。だからこそ解決策はありません。すべてのデバイスがサポートしているわけではありません。 –

答えて

0

私もHuwaiデバイスで同じ問題に直面しました。一部のデバイスはintent.getData()経由で宛先Uriを送信しません。しかし、いくつかのデバッグ後、私はuriがmAction文字列変数に設定されており、intent.getAction()メソッドでアクセスできることが分かりました。次に、このメソッドを使用して 'Uri.parse(outPutFilePath)'を使用してUriを生成できます。最初にintent.getData()がヌルであるかどうかチェックできます。 nullの場合は、intent.getAction()メソッドを使用してUriを文字列として取得し、出力Uriを生成します。 私はこのように私の問題を解決しました。これが役立つことを願っています。

関連する問題