Android TransactionTooLargeException बुला जब TakePicture

0

सवाल

की जरूरत का उपयोग करने के लिए कैमरे के लिए अपने अनुप्रयोग में काम करते हैं, मैं देख रहा हूँ कि चीजों में बदल दिया है एपीआई >= 28 लिए कैसे की तुलना में मैं करने के लिए इस्तेमाल करते हैं, यह है जहां मैं कर सकता startActivityForResult.

हालांकि मैं कर रहा हूँ एक समस्या का सामना जहां मैं कैमरा अनुप्रयोग शुरू, और तुरंत मिल 'TransactionTooLargeException' त्रुटि संदेश डीबग/चलाने के लिए कंसोल ।

के लिए फोन के कैमरे के साथ, मैं कर रहा हूँ

mGetContent = registerForActivityResult(
            new ActivityResultContracts.TakePicture(),
            result -> {
                if (result) {

                }
            }
    );

जहां mGetContent परिभाषित किया गया है के रूप में कक्षा में

private ActivityResultLauncher<Uri> mGetContent;

में AndroidManifest.xml फाइल मैं निम्नलिखित है

<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 फाइल मैं

<?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>

मैं एक बटन सेट अप अपने गतिविधि में जहां मैं शुरू के कैमरे का उपयोग कर

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);
};

के रूप में जल्द ही के रूप में मैं पर नल, बटन और कैमरा अनुप्रयोग को खोलता है, मैं मैं क्या कर सकते हैं केवल लगता है एक पीढ़ी सामान्य त्रुटि संदेश ।

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)

की कोशिश कर रहा करने के लिए गूगल खोज करने के लिए चीजों को खोजने, लेकिन मुसीबत वह नीचे क्या वास्तविक समस्या है.

कुछ सुझाव मुझे बताया की दिशा में onSaveInstanceState, तो मुझे लगता है कि ओवरराइड और एक breakpoint सेट पर यह देखने के लिए क्या हो रहा था, लेकिन इसे बनाया के माध्यम से किसी भी मुद्दे के बिना (मैं क्या बता सकता है).

तरह के एक नुकसान में इस एक के साथ.

android android-camera java
2021-11-24 06:48:37
1

सबसे अच्छा जवाब

0

Wowsers के रूप में क्या करने के लिए बनाता है के बंडल में onSaveInstanceState.

मैं कुछ imageviews, imagebuttons, और सिर्फ सामान्य में बटन मेरे app करने के लिए चीजों को आसान बनाने के लिए हमारे स्टाफ है ।

मैं के माध्यम से चला गया और बदल गया है 'saveState' के सभी ImageViews और ImageButtons के डिफ़ॉल्ट से सच करने के लिए गलत है, के बाद से मुझे परवाह नहीं है क्या वे राज्य में थे, वे कर रहे हैं, सिर्फ दृश्य गाइड.

लिया android:viewHierarchyState से 1.2 MB करने के लिए नीचे 1.6 KB, मेरे पार्सल का आकार अब 3.3 KB है और इसे अब और नहीं है जब दुर्घटनाओं को निलंबित एप्लिकेशन को लाने के लिए कैमरा app है.

TooLargeTool उपयोगी था, लेकिन मैं यह काम नहीं कर सकता जिस तरह से Github पृष्ठ कहते हैं, मैंने कहा कि यह करने के लिए 'startLogging', और अपने गतिविधि में जहां दुर्घटना हो रहा था, मैं एक breakpoint सेट और जाँच अगर यह प्रवेश 'का उपयोग कर isLogging' और यह वापस आया, 'यह सच है'.

अंत में मैं सिर्फ यह लॉग के उत्पादन के TooLargeTool.bundleBreakdown(outState) में onSaveInstanceState.

धन्यवाद करने के लिए Gabe Sechan और ianhanniballake इशारा करने के लिए मुझे क्या करने की दिशा में यह हो सकता है, वहाँ ज्यादा नहीं है वहाँ पर इस बात के लिए विशेष रूप से अपवाद, मेरा मतलब है, वहाँ है, लेकिन यह प्रतीत होता है कि यह सभी के लिए अलग है.

वास्तव में चाहते हैं कि गूगल होगा बाहर प्रिंट में से एक बेहतर सेट त्रुटि संदेश के लिए यह आसान बनाने के लिए बाहर काम करने के लिए जो गतिविधि समस्या थी (या मेरे मामले में, सभी गतिविधियों के 3 संयुक्त).

2021-11-25 05:48:50

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में