यदि आप Intent.ACTION_GET_CONTENT का उपयोग करके एक FileChooser खोलते हैं और बड़ी मात्रा में फ़ाइलों का चयन करते हैं उदा। 2500, एक TransactionTooLargeException फेंक दिया जाएगा और फिर प्रक्रिया को onActivityResult में फिर से शुरू किए बिना मार दिया जाएगा:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.addCategory(CATEGORY_OPENABLE);
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent = Intent.createChooser(intent, "Foo");
        startActivityForResult(intent, 121);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // logic stuff
    }
}

यह कैसे संभव है कि उपयोगकर्ता यह तय करे कि ऐप को नष्ट किए बिना कितनी फाइलों का चयन करना है?

0
Jules 15 अप्रैल 2020, 15:16

1 उत्तर

सबसे बढ़िया उत्तर

आपके पास EXTRA_ALLOW_MULTIPLE को छोड़ने के अलावा, उपयोगकर्ता द्वारा किए जाने वाले चयनों की संख्या को सीमित करने का कोई साधन नहीं है।

यह ACTION_GET_CONTENT कार्यान्वयन (एंड्रॉइड, डिवाइस निर्माता, या ऐप डेवलपर) पर निर्भर है कि वह चयनों की संख्या को कुछ ऐसी संख्या तक सीमित कर दे जिससे समस्या होने की संभावना न हो। जाहिर है, आपके डिवाइस पर और इस परिदृश्य के लिए, ACTION_GET_CONTENT कार्यान्वयन में एक बग है। यदि आप निश्चित रूप से जानते हैं कि यह किसका है, तो बग रिपोर्ट दर्ज करने पर विचार करें।

1
CommonsWare 15 अप्रैल 2020, 12:21