2

나는 많은 게시물을 이미 읽었지만 비슷한 상황은 없습니다.Android API 23의 fragment에서 onActivityResult가 호출되지 않았습니다.

컨텍스트

다음 코드는 API (17)에 대해 잘 작동 - 22가 아니라 23 API 아래의 코드 단편 안에.

private void takePicture() { 

    // identify if the device has camera to decide the next flow of action 
    PackageManager pm = mContext.getPackageManager(); 
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 
     Toast.makeText(mContext, R.string.msgPleaseTakePicture2, Toast.LENGTH_LONG).show(); 
     dispatchTakePictureIntent(); 
    }else { 
     showErrorDialog(getString(R.string.msgErrorPicture)); 
    } 

} 

private void dispatchTakePictureIntent() { 

    ContentValues values; 
    values = new ContentValues(); 
    values.put(MediaStore.Images.Media.TITLE, "Doarnf"); 
    values.put(MediaStore.Images.Media.DESCRIPTION, "Doarnf"); 
    imageUri = getActivity().getContentResolver().insert(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 

    if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 

} 

//on ActivityResult method 
public void onActivityResult(int requestCode, int resultCode, Intent intent) { 

    switch (requestCode) 
    { 
     case REQUEST_IMAGE_CAPTURE: 
      getPictureResults(resultCode, intent); 
      break; 
    } 

} 

private void getPictureResults(int resultCode, Intent intent) { 

    if (resultCode == Activity.RESULT_OK) 
    { 
     try { 
      mImageBitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), imageUri); 
      mImageBitmap = ImageHelper.scaleBitmapBasedOnHeight(mImageBitmap, 1296); 
      executeDonation(); 

     } catch (Exception e) { 
      showErrorDialog(getString(R.string.msgErrorPicture)); 
     } 
    }else { 
     showErrorDialog(getString(R.string.msgErrorPicture)); 
    } 

} 

의 AndroidManifest.xml

<activity 
    android:name="br.com.cfb.doarnf.NavigationDrawerActivity" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:launchMode="singleTop" 
    android:theme="@style/AppDrawer" 
    android:windowSoftInputMode="adjustPan" 
    android:screenOrientation="portrait"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="br.com.cfb.doarnf.MainActivity" /> 
</activity> 

문제점

문제는 :

  • 때로는 onActivityResults 다시 호출

    하지만 조각 VAR 이블들이 사라진다.

  • 가끔 OnActivityResults가 콜백되지 않습니다. 사진을 찍으면 안드로이드 메인 화면이 나타납니다.

그래서 나는 안드로이드 API (23)

어떤 생각에서 버그가 있음을 가정하여거야?

미리 감사드립니다.

+0

, 나는의 전체 코드를보고 싶어요 이 활동/조각. 나에게도 알려주십시오. –

+0

SDK 23을 실행중인 여러 장치/에뮬레이터에서 테스트 했습니까? 어쩌면 범인은 API 수준이 아닌 기기입니다. – liminal

답변

0

API 수준 23 이상에서 Menifest 파일의 사용 권한이 충분하지 않은 경우 필요한 경우 외부에서 사용 권한을 요청해야합니다. 따라서 READ_EXTERNAL_STORAGE 및 모든 항목이 menifest 파일과 같은 권한을 썼으나 API 23 이상인 경우 그것은 외부 적으로 필요하며, 그 적용 외부 허가 그래서

당신이 다음 내 아래에 답을 확인하기위한 인식하지 : 괜찮아요 경우

issues in writing files to sd card in android api 23(marshmallow)