2015-05-06 1 views
6

मुझे देखे जाने वाले अधिकांश स्थान, WebView में फ़ाइल अपलोड सुविधा openFileChooser() विधि का उपयोग करके लागू की गई है। क्या यह इस विधि का उपयोग करने के लिए कानूनी/सुरक्षित है? अगर मैं इसे कोड में उपयोग करता हूं, तो क्या मेरा कोड कहीं भी टूट जाएगा? अगर मैं इस विधि का उपयोग करता हूं तो कोई सुरक्षा समस्याएं?क्यों WebChromeClient में openFileChooser दस्तावेज़ों से छिपा हुआ है? क्या इस विधि का उपयोग करना सुरक्षित है?

क्यों एंड्रॉइड पुराने संस्करणों में इस एपीआई को छुपाता है? केवल 5.0/से ऊपर उन्होंने SHowFileChooser() विधि पर पेश किया है, जिसका अर्थ है आधिकारिक तौर पर वे 5.0 से नीचे वेबव्यू में फ़ाइल अपलोड का समर्थन नहीं करते हैं?

उत्तर

0

चूंकि यह WebChromeClient में प्रलेखित नहीं है, कोई यह एक सुरक्षित API नहीं है, लेकिन हाँ यह कानूनी है।

लेकिन आप अभी भी इसका उपयोग कर सकते हैं। किसी भी त्रुटि को पकड़ने के लिए सुनिश्चित करें। लेकिन प्रक्रिया को काम करने की गारंटी नहीं दी जा सकती है।

+1

क्या आपको कोई एहसास है कि एंड्रॉइड पुराने संस्करणों में इस एपीआई को क्यों छुपाता है? केवल 5.0 पर उन्होंनेShowFileChooser() विधि पर पेश किया है। इसका मतलब है आधिकारिक तौर पर वे 5.0 से नीचे वेबव्यू में फ़ाइल अपलोड का समर्थन नहीं करते हैं? मैंने सवाल भी अपडेट किया। –

+0

मुझे नहीं पता क्यों। लेकिन हाँ, * आधिकारिक रूप से * कि अपलोड सुविधा एपीआई -21 और अधिक के बाद उपलब्ध है। क्या आपने निम्न API पर 'onShowFileChooser()' का उपयोग करने का प्रयास किया है? – shkschneider

+0

मुझे लगता है किShowFileChooser() को निम्न संस्करणों पर नहीं कहा जाएगा। हालांकि मैंने कोशिश की और नतीजा एक जैसा है। अगर मैं openFileChooser() विधि का उपयोग करता हूं तो कोई सुरक्षा समस्याएं? –

11

पुराने openFileChooser(...) कॉलबैक का उपयोग पर कोई सुरक्षा प्रभाव नहीं है। यह ठीक है। केवल नकारात्मक पक्ष यह है कि इसे कुछ प्लेटफार्म स्तरों पर नहीं बुलाया जाएगा और इसलिए काम नहीं करेगा।

  • void openFileChooser(ValueCallback<Uri> uploadMsg) Android 2.2 (एपीआई स्तर 8) पर काम करता है Android 2.3 (एपीआई स्तर 10) एंड्रॉयड 3.0 पर
  • openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) काम करता है (एपीआई स्तर 11) Android 4.0 अप करने के लिए (एपीआई स्तर 15)
  • अप करने के लिए Android 4.3 (एपीआई स्तर 18) एंड्रॉयड 5.0 पर
  • onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) काम करता है (एपीआई स्तर 21) अप करने के लिए और

आप उपयोग कर सकते हैं इसके बाद के संस्करण एंड्रॉयड 4.1 (एपीआई स्तर 16) पर काम करता है openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) एक पुस्तकालय जो इसे दूर करता है और इन सभी कॉलबैक का ख्याल रखता है, विभिन्न मंच स्तरों पर ताकि यह काम करता है। उदाहरण:

https://github.com/delight-im/Android-AdvancedWebView

तुम भी देख सकते हैं कि यह कैसे स्रोत में किया है:

https://github.com/delight-im/Android-AdvancedWebView/blob/0f06e73ecee13ebc4552ac00bc0848e18662a25d/Source/src/im/delight/android/webview/AdvancedWebView.java#L597

https://github.com/delight-im/Android-AdvancedWebView/blob/0f06e73ecee13ebc4552ac00bc0848e18662a25d/Source/src/im/delight/android/webview/AdvancedWebView.java#L1044

तथ्य यह है कि यह सिर्फ undocumented है मतलब है कि आप भरोसा नहीं कर सकते इस पर। जब इसे एंड्रॉइड 2.2 में पेश किया गया था, तो कोई भी नहीं जानता था कि यह एंड्रॉइड 4.4 में काम करना बंद कर देगा, लेकिन आपको इसे स्वीकार करना होगा।

+0

4.4 के बारे में क्या? –

+0

@AntonDuzenko दुर्भाग्यवश, वहां कुछ भी काम करने का कोई मौका नहीं है। – caw

संबंधित मुद्दे