2014-09-04 9 views
8

मैं एंड्रॉइड ऐप में गहरी लिंकिंग को लागू करने की कोशिश कर रहा हूं।एंड्रॉइड ऐप पर वेबव्यू में गहरे लिंकिंग को कैसे सक्षम करें?

जब मैं क्रोम जैसे एंड्रॉइड ब्राउज़र पर कस्टम यूआरएल (xxxx: // repost? Id = 12) की गहरी लिंकिंग पर क्लिक करता हूं, तो मेरा ऐप खुलता है और बहुत अच्छी तरह से काम करता है।

समस्या है, ऐप में, एक वेब व्यू विजेट है, और मैं वहां भी गहरे लिंकिंग काम करना चाहता हूं।

वर्तमान में, यह Can't connect to the server त्रुटि दिखा रहा है।

अग्रिम धन्यवाद।

+0

अवहेलना shouldOverrideUrlLoading समारोह संभाल अगर url.startsWith (APP_SCHEME) – mitvenkatesan

उत्तर

11

एंड्रॉइड वेब व्यू के साथ यह समस्या है क्योंकि यह सब कुछ यूआरएल के रूप में व्यवहार करता है लेकिन मोबाइल पर क्रोम जैसे अन्य ब्राउज़र इस योजना को रोकते हैं और ओएस इसी ऐप को खोलने के लिए बाकी करेगा। यह आप इस प्रकार अपने वेब दृश्य shouldOverrideUrlLoading कार्यों संशोधित करने की आवश्यकता को लागू करने के लिए:

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     LogUtils.info(TAG, "shouldOverrideUrlLoading: " + url); 
     Intent intent; 

     if (url.contains(AppConstants.DEEP_LINK_PREFIX)) { 
      intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse(url)); 
      startActivity(intent); 

      return true; 
     } 
} 

उपरोक्त कोड में अपने url योजना जैसे साथ AppConstants.DEEP_LINK_PREFIX बदलें।

android-app: // अपने पैकेज

आशा इस मदद करता है !!

+0

यह अगर उपयोगकर्ता अन्य ऐप इंस्टॉल किया –

+1

यह डीप लिंक खोलने के बारे में है नहीं है विफल करने के लिए बाध्य कर रहा है अपने ऐप के लिए अपने ऐप वेब व्यू से। कृपया सवाल देखें? अगर कुछ ऐसा है जो मुझे याद आ रहा है तो कृपया विस्तृत करें। – Pranav

+3

अगर (intent.resolveActivity (getPackageManager())! = Null) यह जांच करेगा कि इरादा शुरू किया जा सकता है या नहीं –

0

@pranav का उत्तर सही है लेकिन इरादे को संभालने के लिए कोई ऐप्स नहीं होने पर क्रैश हो सकता है। @ Georgianbenetatos की कि को रोकने के लिए समाधान अपने आप से मदद करता है

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse(url)); 
if (intent.resolveActivity(getPackageManager()) != null) { 
    startActivity(intent); 
} else { 
    Toast.makeText(this, R.string.no_apps_to_handle_intent, Toast.LENGTH_SHORT).show(); 
} 
संबंधित मुद्दे