我使用自定义相机应用程序然后我打开这个应用程序工作正常,但我打开相机视图,并拍照得到错误在Android 4.4版本中失败的活页夹交易,但当我检查以下所有版本4.4以下工作正常。为什么android 4.4版本有问题?
我的相机活动如下:
public class CameraActivity extends Activity {
Camera mCamera;
CameraPreview mCameraPreview;
protected static final int MEDIA_TYPE_IMAGE = 0;
static String FilePAth = "";
Button takePicture , btnGlr , btnCancelCamera;
static String base64string = "";
String ImageType;
final int RESULT_LOAD_IMAGE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.camera_preview);
mCamera = getCameraInstance();
mCameraPreview = new CameraPreview(CameraActivity.this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mCameraPreview);
takePicture = (Button) findViewById(R.id.btnTakePicture);
takePicture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mCamera.takePicture(null, null, mPicture);
}
});
Intent intent = getIntent();
if (intent.hasExtra("ImageType")) {
ImageType = getIntent().getStringExtra("ImageType").toString();
Log.v("log", " ImageType in Camera Activity -- > " + ImageType);
}
btnGlr = (Button)findViewById(R.id.btnGallary);
btnGlr.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE );
}
});
btnCancelCamera = (Button)findViewById(R.id.btnCancelCamera);
btnCancelCamera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getApplication(), MarketPlaceActivity.class);
startActivity(intent);
}
});
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
releaseCamera();
}
private void releaseCamera() {
if (mCamera != null) {
mCamera.release(); // release the camera for other applications
mCamera = null;
}
}
private Camera getCameraInstance() {
try {
Log.v("log_tag", "camera try:::" + mCamera);
mCamera = Camera.open();
} catch (Exception e) {
// cannot get camera or does not exist
Log.v("log_tag", "camera catch:::" + mCamera);
releaseCamera();
}
return mCamera;
}
PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
if (ImageType.equals("AddPicture")) {
Intent i = new Intent(CameraActivity.this,MarketPlaceActivity.class);
i.putExtra("data", data);
startActivity(i);
} else {
Intent returnIntent = new Intent();
returnIntent.putExtra("data", data);
setResult(RESULT_OK, returnIntent);
CameraActivity.this.finish();
}
}
};
public void onBackPressed() {
Intent returnIntent = new Intent();
returnIntent.putExtra("path", FilePAth);
setResult(RESULT_OK, returnIntent);
finish();
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
Log.v("log"," picturePath --> selected Gallary Image path --> " + picturePath);
cursor.close();
InputStream iStream;
byte[] inputData = null;
try {
iStream = getContentResolver().openInputStream(selectedImage);
inputData = getBytes(iStream);
Log.v("log"," selected Gallary Image ByteArray --> " + inputData);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (ImageType.equals("AddPicture")) {
Intent i = new Intent(getBaseContext(),MarketPlaceActivity.class);
i.putExtra("data", inputData);
i.putExtra("image_from", "Gallary");
startActivity(i);
} else {
Intent returnIntent = new Intent();
returnIntent.putExtra("data", inputData);
returnIntent.putExtra("image_from", "Gallary");
setResult(RESULT_OK, returnIntent);
CameraActivity.this.finish();
}
// ImageView imageView = (ImageView) findViewById(R.id.imgView);
// imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
public byte[] getBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
return byteBuffer.toByteArray();
}
}
和相机预览下方::
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
Boolean isPreviewRunning = true;
// Constructor that obtains context and camera
public CameraPreview(Context context, Camera camera) {
super(context);
mCamera = camera;
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mSurfaceHolder = getHolder();
mSurfaceHolder.addCallback(this);
// deprecated setting, but required on Android versions prior to 3.0
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
//mCamera.setDisplayOrientation(90);
} catch (IOException e) {
// left blank for now
}
}
/*@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
//mCamera.stopPreview();
// mCamera.release();
if (mCamera != null)
{
mCamera.stopPreview();
mCamera.release();
}
}*/
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
this.getHolder().removeCallback(this);
if (mCamera != null)
{
mCamera.stopPreview();
mCamera.release();
}
}
/*@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
int width, int height) {
// start preview with new settings
try {
mCamera.stopPreview();
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
//mCamera.setDisplayOrientation(90);
} catch (Exception e) {
// intentionally left blank for a test
}
}*/
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// If your preview can change or rotate, take care of those events here.
// Make sure to stop the preview before resizing or reformatting it.
if (mSurfaceHolder.getSurface() == null){
// preview surface does not exist
return;
}
// stop preview before making changes
if(isPreviewRunning)
{
mCamera.stopPreview();
}
Parameters parameters = mCamera.getParameters();
WindowManager windo = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = windo.getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0)
{
parameters.setPreviewSize(h,w);
mCamera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90)
{
parameters.setPreviewSize(w, h);
}
if(display.getRotation() == Surface.ROTATION_180)
{
parameters.setPreviewSize(h, w);
// mCamera.setDisplayOrientation(270);
}
if(display.getRotation() == Surface.ROTATION_270)
{
parameters.setPreviewSize(w, h);
mCamera.setDisplayOrientation(180);
}
// set preview size and make any resize, rotate or
// reformatting changes here
// start preview with new settings
// mCamera.setParameters(parameters);
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
isPreviewRunning = true;
} catch (Exception e){
Log.d("log", "Error starting camera preview: " + e.getMessage());
}
}
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
int previewWidth = MeasureSpec.getSize(widthSpec);
int previewHeight = MeasureSpec.getSize(heightSpec);
//Get the padding of the border background
int hPadding = getPaddingLeft() + getPaddingRight();
int vPadding = getPaddingTop() + getPaddingBottom();
//Resize the preview frame with correct aspect ratio
previewWidth += hPadding;
previewHeight -= vPadding;
//Add the padding of the border.
previewWidth += hPadding;
previewHeight += vPadding;
//Ask children to follow the new preview dimension
super.onMeasure(MeasureSpec.makeMeasureSpec(previewWidth, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(previewHeight, MeasureSpec.EXACTLY));
}
}
我在图片视图中的个人资料照片中设置了我的代码,位于下面的::
public class ProfileFragment extends Fragment{
EditText edtFname ,edtLname ,edtEmailID ,edtPassword;
private String userId;
MyApplication app;
ImageView imgUser;
String base64st;
byte[] byteArrayimage;
CircularImageView imguser1;
ProgressDialog progress;
Bitmap resizedBitmap;
private View rootView;
Bitmap bmp;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.profile, container, false);
app = (MyApplication) getActivity().getApplicationContext();
edtFname = (EditText)rootView.findViewById(R.id.edtProfileFirstname);
edtLname = (EditText)rootView.findViewById(R.id.edtProfileLastname);
edtEmailID = (EditText)rootView.findViewById(R.id.edtProfileEmail);
edtPassword = (EditText)rootView.findViewById(R.id.edtProfilePAssword);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
progress = new ProgressDialog(getActivity());
progress.setMessage("Loading...");
new JSONTask().execute();
TextView btnTakeUserPhoto = (TextView)rootView.findViewById(R.id.txt_change_profile);
btnTakeUserPhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent cameraAct = new Intent(getActivity(),CameraActivity.class);
cameraAct.putExtra("ImageType", "ProfilePicture");
startActivityForResult(cameraAct, 1);
}
});
Button btnUpdateProfile = (Button)rootView.findViewById(R.id.btn_update_profile);
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(),
"fonts/ITCAvantGardeStd-BkCn.otf");
edtFname.setTypeface(tf);
edtLname.setTypeface(tf);
edtEmailID.setTypeface(tf);
edtPassword.setTypeface(tf);
btnTakeUserPhoto.setTypeface(tf);
btnUpdateProfile.setTypeface(tf);
btnUpdateProfile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String strFname = edtFname.getText().toString();
String strLname = edtLname.getText().toString();
String strEmail = edtEmailID.getText().toString();
String strPassword = edtPassword.getText().toString();
Log.v("log", " strPassword " + strPassword);
ArrayList<UserInfo_dto> result_list = DBAdpter.updateUserInfo(userId,strFname,strLname,strEmail,strPassword,base64st);
if(result_list.get(0).getMsg().equals("User information successfully updated"))
{
Toast.makeText(getActivity(), result_list.get(0).getMsg() , 1).show();
String message = DBAdpter.updateUserImage(userId,base64st);
Log.v("log"," message --> "+ message);
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm
.beginTransaction();
HomeFragment fm2 = new HomeFragment();
fragmentTransaction.replace(R.id.relProfileFraLayout,fm2, "HELLO");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
});
return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
Log.v("log"," OnActivity Result");
if (data.hasExtra("data")) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true; // inPurgeable is used to free up
// memory while required
Bitmap b = BitmapFactory.decodeByteArray(
data.getByteArrayExtra("data"), 0,
data.getByteArrayExtra("data").length, options);
int width = b.getWidth();
int height = b.getHeight();
int newWidth = 100;
int newHeight = 80;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
if (data.hasExtra("image_from")) {
resizedBitmap = Bitmap.createBitmap(b, 0, 0, width, height,
matrix, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
resizedBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
byteArrayimage = stream.toByteArray();
}
else
{
int rotation = getActivity().getWindowManager()
.getDefaultDisplay().getRotation();
int finalDegree = 0;
if (rotation == 0) {
finalDegree = 90;
}
if (rotation == 1) {
finalDegree = 270;
}
if (rotation == 2) {
finalDegree = 180;
}
if (rotation == 3) {
finalDegree = 90;
}
matrix.postRotate(finalDegree);
resizedBitmap = Bitmap.createBitmap(b, 0, 0, width,
height, matrix, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
resizedBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
byteArrayimage = stream.toByteArray();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
imguser1.setImageBitmap(resizedBitmap);
imguser1.setScaleType(ScaleType.CENTER);
imguser1.setBorderColor(getResources().getColor(R.color.GrayLight));
imguser1.setBorderWidth(0);
MarketPlaceActivity.imView.setImageBitmap(resizedBitmap);
MarketPlaceActivity.imView.setScaleType(ScaleType.CENTER);
} else {
imgUser.setImageBitmap(resizedBitmap);
imgUser.setScaleType(ScaleType.CENTER);
MarketPlaceActivity.imView1.setImageBitmap(resizedBitmap);
MarketPlaceActivity.imView1.setScaleType(ScaleType.CENTER);
}
base64st = Base64.encodeBytes(byteArrayimage);
}
}
}
public class JSONTask extends AsyncTask<String, Void, String> {
public void onPreExecute() {
progress.show();
}
@Override
protected String doInBackground(String... arg) {
String listSize = "";
String FirstNAme = DBAdpter.fetch_UserDetail_data.get(0).getFirst_name();
userId = app.getUserID();
String lastName = DBAdpter.fetch_UserDetail_data.get(0).getLast_name();
String emailId = DBAdpter.fetch_UserDetail_data.get(0).getEmail();
String Mobile = DBAdpter.fetch_UserDetail_data.get(0).getMobile();
Log.v("log", "userId" + userId + " FirstNAme : " + FirstNAme + " LAstName " + lastName + " emailId " + emailId + "Mobile " + Mobile);
edtFname.setText(FirstNAme);
edtLname.setText(lastName);
edtEmailID.setText(emailId);
edtPassword.setText("");
String img_url = DBAdpter.fetch_UserDetail_data.get(0).getStrore_profile_image().toString().trim();
bmp = getBitmapFromUrl(img_url);
return listSize; // This value will be returned to your
// onPostExecute(result) method
}
@Override
protected void onPostExecute(String result) {
// Create here your JSONObject...
Log.v("log_tag", "list ON Post");
progress.dismiss();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
Log.v("log", " Above HoneyComb ");
imguser1 = (CircularImageView) rootView.findViewById(R.id.img_user_image);
imguser1.setImageBitmap(bmp);
imguser1.setBorderColor(getResources().getColor(R.color.GrayLight));
imguser1.setBorderWidth(0);
final BitmapDrawable bitmapDrawable = (BitmapDrawable) imguser1
.getDrawable();
final Bitmap yourBitmap = bitmapDrawable.getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
byte[] byteArray = stream.toByteArray();
base64st = Base64.encodeBytes(byteArray);
Log.v("log_tag", "base64st" + base64st);
} else {
Log.v("log", " Below HoneyComb ");
imgUser = (ImageView)rootView.findViewById(R.id.img_user_image);
imgUser.setImageBitmap(bmp);
final BitmapDrawable bitmapDrawable = (BitmapDrawable) imgUser
.getDrawable();
final Bitmap yourBitmap = bitmapDrawable.getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
byte[] byteArray = stream.toByteArray();
base64st = Base64.encodeBytes(byteArray);
Log.v("log_tag", "base64st" + base64st);
}
}
// You'll have to override this method on your other tasks that extend
// from this one and use your JSONObject as needed
}
public Bitmap getBitmapFromUrl(String urlStore) {
URL url = null;
try {
url = new URL(urlStore);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap bmp = null;
try {
bmp = BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bmp;
}
}
我测试Android 4.4版本然后在这里得到错误::
04-30 10:34:39.303: V/log(32387): onMenuItemClick Selected Item ===> Add Picture
04-30 10:34:39.353: V/log(32387): current state is visible
04-30 10:34:39.414: D/AbsListView(32387): unregisterIRListener() is called
04-30 10:34:39.414: D/AbsListView(32387): unregisterIRListener() is called
04-30 10:34:39.414: D/AbsListView(32387): unregisterIRListener() is called
04-30 10:34:39.424: W/ApplicationPackageManager(32387): getCSCPackageItemText()
04-30 10:34:39.444: V/log_tag(32387): camera try:::null
04-30 10:34:39.744: V/log(32387): ImageType in Camera Activity -- > AddPicture
04-30 10:34:41.065: V/log(32387): hiding menu
04-30 10:34:41.065: I/Choreographer(32387): Skipped 78 frames! The application may be doing too much work on its main thread.
04-30 10:34:41.295: D/AbsListView(32387): onVisibilityChanged() is called, visibility : 4
04-30 10:34:41.295: D/AbsListView(32387): unregisterIRListener() is called
04-30 10:34:41.295: D/AbsListView(32387): onVisibilityChanged() is called, visibility : 4
04-30 10:34:41.295: D/AbsListView(32387): unregisterIRListener() is called
04-30 10:34:41.295: D/AbsListView(32387): onVisibilityChanged() is called, visibility : 4
04-30 10:34:41.295: D/AbsListView(32387): unregisterIRListener() is called
04-30 10:34:53.207: D/dalvikvm(32387): GC_FOR_ALLOC freed 484K, 6% free 37240K/39444K, paused 32ms, total 32ms
04-30 10:34:53.247: E/JavaBinder(32387): !!! FAILED BINDER TRANSACTION !!!
04-30 10:35:20.444: D/AndroidRuntime(32387): Shutting down VM
04-30 10:35:20.444: W/dalvikvm(32387): threadid=1: thread exiting with uncaught exception (group=0x4192eda0)
04-30 10:35:20.454: E/AndroidRuntime(32387): FATAL EXCEPTION: main
04-30 10:35:20.454: E/AndroidRuntime(32387): Process: com.buymysari, PID: 32387
04-30 10:35:20.454: E/AndroidRuntime(32387): java.lang.RuntimeException: takePicture failed
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.hardware.Camera.native_takePicture(Native Method)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.hardware.Camera.takePicture(Camera.java:1338)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.hardware.Camera.takePicture(Camera.java:1283)
04-30 10:35:20.454: E/AndroidRuntime(32387): at com.buymysari.CameraActivity$2.onClick(CameraActivity.java:58)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.view.View.performClick(View.java:4633)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.view.View$PerformClick.run(View.java:19330)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.os.Handler.handleCallback(Handler.java:733)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.os.Handler.dispatchMessage(Handler.java:95)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.os.Looper.loop(Looper.java:157)
04-30 10:35:20.454: E/AndroidRuntime(32387): at android.app.ActivityThread.main(ActivityThread.java:5356)
04-30 10:35:20.454: E/AndroidRuntime(32387): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 10:35:20.454: E/AndroidRuntime(32387): at java.lang.reflect.Method.invoke(Method.java:515)
04-30 10:35:20.454: E/AndroidRuntime(32387): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
04-30 10:35:20.454: E/AndroidRuntime(32387): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
04-30 10:35:20.454: E/AndroidRuntime(32387): at dalvik.system.NativeStart.main(Native Method)
04-30 10:35:26.159: I/Process(32387): Sending signal. PID: 32387 SIG: 9
04-30 10:35:26.489: W/ActivityThread(844): Application com.buymysari can be debugged on port 8100...
04-30 10:35:26.509: W/ApplicationPackageManager(844): getCSCPackageItemText()
04-30 10:35:26.670: D/AbsListView(844): Get MotionRecognitionManager
04-30 10:35:26.700: D/AbsListView(844): Get MotionRecognitionManager
04-30 10:35:26.720: V/log(844): UserID null
04-30 10:35:26.720: V/log(844): StoreID null
04-30 10:35:26.730: V/log(844): UserID store_id --> 5
04-30 10:35:26.730: D/AndroidRuntime(844): Shutting down VM
答案 0 :(得分:23)
在代码中,
PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
if (ImageType.equals("AddPicture")) {
Intent i = new Intent(CameraActivity.this,MarketPlaceActivity.class);
i.putExtra("data", data);// problem lies here
startActivity(i);
} else {
Intent returnIntent = new Intent();
returnIntent.putExtra("data", data);// problem lies here
setResult(RESULT_OK, returnIntent);
CameraActivity.this.finish();
}
}
};
您尝试解析大数据和意图,但根据documentation,Binder交易失败,因为它太大了。
解决方案:
我建议您从收到的byte[] data
创建位图并将图像存储在设备上。然后根据您的要求将该图像的路径解析为任何其他活动。
答案 1 :(得分:1)
请参阅this主题。 报价: 它失败是因为你试图将图像作为额外的意图发送而且它太大了。您无法使用IPC通信技术(如意图或服务/活页夹)发送图像,根据Android的版本,限制为1mb / 10mb。
答案 2 :(得分:1)
我认为问题出在这里:returnIntent.putExtra("data", data);
。
交易数据的意图有限。如果您需要位图或大文件,则不得将其作为额外传递而是仅传递图像路径或uri,并在您显示或使用它的活动中创建位图或文件。
答案 3 :(得分:1)
就我而言,它是图像字节数组,它与 Intent Bundle extra 中的其他变量一起传递,并且它的大小太大,因此导致 TransactionTooLargeException。
解决方案:要么将图像字节数组存储在外部存储上,不要传入意图包的额外内容。