Uygulamamdaki kamerayı iş için kullanmam gerekiyor, startActivityForResult kullanabileceğim yerde nasıl yaptığıma kıyasla API >= 28'de işlerin değiştiğini görüyorum.
Ancak, kamera uygulamasını başlattığım ve hemen debug/run konsolunda 'TransactionTooLargeException' hata mesajını aldığım bir sorunla karşı karşıyayım.
Kamerayı çağırdığım için yapıyorum.
mGetContent = registerForActivityResult(
new ActivityResultContracts.TakePicture(),
result -> {
if (result) {
}
}
);
Burada mGetContent sınıfta şu şekilde tanımlanır:
private ActivityResultLauncher<Uri> mGetContent;
Androidmanifest'imde.xml dosyası aşağıdakilere sahibim
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.test.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
File_paths dosyamda var
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
name="files"
path="."/>
<files-path
name="app_images"
path="./files/"/>
</paths>
Etkinliğimde kamerayı kullanarak başlattığım bir düğme var
findViewById(R.id.button)).setOnClickListener(v -> {
File directory = new File(context.getFilesDir(), "app_images");
if (!directory.exists()) directory.mkdir();
File file = new File(directory, "image.jpg");
Uri uri = getUriForFile(this, "com.test.fileprovider", file);
mGetContent.launch(uri);
};
Düğmeye dokunduğumda ve kamera uygulaması açılır açılmaz, yalnızca aşırı genel bir hata mesajı olduğunu varsayabildiğim şeyi alıyorum.
E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 1284092)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test, PID: 14296
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1284092 bytes
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:161)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7397)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
Caused by: android.os.TransactionTooLargeException: data parcel size 1284092 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:511)
at android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4524)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145)
Bir şeyleri bulmak için Google'da arama yapmaya çalışıyorum, ancak asıl sorunun ne olduğunu anlamakta zorlanıyorum.
Bazı öneriler beni onsaveınstancestate'e yönlendirdi, bu yüzden bunu geçersiz kıldım ve neler olduğunu görmek için bir kesme noktası belirledim, ancak herhangi bir sorun yaşamadan (söyleyebildiğim kadarıyla) başardı.
Bu seferki biraz kayıp.