2012-07-03 20 views
15

मैं एंड्रॉयड 4.1 परपहुंच-नियंत्रण-अनुमति दें-उत्पत्ति त्रुटि एंड्रॉयड पर 4.1

अपने आवेदन में पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति साथ कोई समस्या है मैं कुछ स्थानीय HTML फ़ाइलें और Javascripts है जो मैं डेटा प्राप्त करने का उपयोग कर रहा था वेब सेवाओं से। एंड्रॉइड 4.1 की कोशिश करने तक कोई समस्या नहीं थी लेकिन एंड्रॉइड 4.1 पर कोशिश करने के बाद मुझे यह त्रुटि मिली।

मैंने बहुत से दस्तावेज़ पढ़े लेकिन मुझे इस समस्या को हल करने का कोई तरीका नहीं मिला।

उत्तर

52

आपको बस इतना करना: आप वेब सेवा पर नियंत्रण है, तो आप सेट कर सकते हैं पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) 
    wv.getSettings().setAllowUniversalAccessFromFileURLs(true); 
+2

धन्यवाद, मैं इसे आज़माउंगा। लेकिन Google एपीआई अनुकरणकर्ताओं को यह समस्या नहीं है; यह दिलचस्प है। –

+0

यह काम करना चाहिए, मेरे ऐप में एक ही समस्या थी – slushi

+1

यह काम करता है! धन्यवाद! – mig35

0

क्या आपकी वेब सेवाएं एक ही डोमेन से होस्टिंग कर रही हैं? मुझे एक अलग डोमेन के तहत एक सेवा में AJAX कॉल करते समय यह त्रुटि प्राप्त होती थी। , शीर्षक में * (हालांकि इस तरह से ऐसा करने का एक सुरक्षित तरीका नहीं है।)

+0

वास्तव में वे एक ही डोमेन में हैं लेकिन विभिन्न सबडोमेन हैं। लेकिन मुझे समझ में नहीं आया कि मुझे यह त्रुटि केवल एंड्रॉइड 4.1 क्यों मिली है और पुराने संस्करण नहीं हैं? किया बदल गया? –

+0

विभिन्न उप डोमेनों की भी अनुमति नहीं है। क्रोम वास्तव में काम कर रहा था (यह मेरे "प्राप्त" अनुरोध के लिए ठीक काम कर रहा था, लेकिन मेरे "पोस्ट" अनुरोध को "विकल्प" अनुरोध में बदल रहा था), मुझे त्रुटि को समझने में काफी समय लगा। त्रुटि तब चली गई जब मैंने सेवाओं और क्लाइंट कोड को उसी सबडोमेन के नीचे रखा था। – nilgun

+0

यह मेरे लिए असंभव है; क्योंकि क्लाइंट मोबाइल डिवाइस है :) आपकी मदद के लिए धन्यवाद। –

8

@ मैं डेवलपर और अन्य जो एक ही समस्या का सामना कर रहे हैं।

स्लूसिस समाधान ठीक काम करता है। ,

if (Build.VERSION.SDK_INT >= 16) { 
    Class<?> clazz = webView.getSettings().getClass(); 
    Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class); 
    if (method != null) { 
     method.invoke(webView.getSettings(), true); 
    } 
} 

यह लोड और रनटाइम पर विधि आह्वान करेंगे, ताकि आप जैसे के साथ संकलन कर सकते हैं: लेकिन आप निम्नलिखित जोड़ने के लिए अगर आप API11 नीचे के खिलाफ और समर्थन प्रणाली संकलित करने के लिए चाहते हैं एंड्रॉइड 2.3.3।

+1

अच्छा समाधान काम नहीं कर रहा। क्या एसडीके संस्करण 16 के लिए इस संपत्ति को अक्षम करने का कोई विकल्प है? – Karthick