【发布时间】:2016-10-02 22:42:49
【问题描述】:
我已经阅读了很多帖子,但没有一个有类似的情况。
上下文
以下代码适用于 API 17 - 22,但不适用于 API 23。 下面的代码在片段内。
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 但片段变量会丢失。
有时 OnActivityResults 不会被回调。拍摄照片时,会显示 Android 主屏幕。
所以我认为这是来自 Android API 23 的错误。
有什么想法吗?
在此先感谢您。
【问题讨论】:
-
如果没关系,我想看看这个活动/片段的完整代码。也请通知我。
-
您是否在运行 SDK 23 的多个设备/模拟器上对此进行了测试?也许,罪魁祸首是你的设备,而不是 API 级别
标签: android android-fragments android-6.0-marshmallow onactivityresult startactivityforresult