2013-12-14 5 views
5

के लिए कैसे जोड़ूं, मुझे यह काम मिल गया है क्योंकि इसे निम्न कोड का उपयोग करना चाहिए। सभी http urls को वेबव्यू के भीतर खोलने के रूप में खुलता है, "tel:" लिंक डायलर में खुलता है, और "mailto:" लिंक खुलता है क्योंकि यह ईमेल क्लाइंट में होना चाहिए।वेबव्यू "mailto:" लिंक और "tel:" लिंक intent.ACTION_VIEW का उपयोग करके काम करता है, लेकिन मैं अद्वितीय विषय यानी "mailto:" लिंक

लेकिन मेरी समस्या यह है कि मैं अपने पूर्व परिभाषित विषय के बजाय "mailto:" लिंक के विषय को कैसे बदल सकता हूं। मुझे लगता है कि "mailto:" लिंक के लिए "tel:" लिंक & 1 के लिए 2 अलग-अलग इरादों, 1 होना चाहिए। मुझे बस यह नहीं पता कि कोड को चाहिएऑवरराइडउर्ल लोडिंग विधि में नीचे कैसे रखा जाए। या शायद मैं जो भी चाहता हूं उसके लिए गलत विधि का उपयोग कर रहा हूं।

 @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if(url.startsWith("http:") || url.startsWith("https:")) { 
       return false; 
      } 

      // Otherwise allow the OS to handle it 
      Intent intent = new Intent(Intent.ACTION_VIEW, 
        Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 

मैं अपने खुद के विषय "mailto:" पाने में कामयाब रहे आशय के साथ काम करने के लिए, लेकिन बिना "टेलीफोन:" लिंक कोड में शामिल थे। तो मैं "mailto:" लिंक में अपने स्वयं के विषय का उपयोग कैसे कर सकता हूं?

किसी भी विचार या सुझाव की सराहना की जाएगी!

उत्तर

8

यह मेरा समाधान है & यह मेरे लिए काम करता है। मुझे उम्मीद है कि यह किसी भी अन्य समस्या के साथ किसी और की मदद करेगा।

@Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if(url.startsWith("http:") || url.startsWith("https:")) { 
       return false; 
      } 

      // Otherwise allow the OS to handle it 
      else if (url.startsWith("tel:")) { 
       Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
       startActivity(tel); 
       return true; 
      } 
      else if (url.startsWith("mailto:")) { 
       String body = "Enter your Question, Enquiry or Feedback below:\n\n"; 
       Intent mail = new Intent(Intent.ACTION_SEND); 
       mail.setType("application/octet-stream"); 
       mail.putExtra(Intent.EXTRA_EMAIL, new String[]{"email address"}); 
       mail.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
       mail.putExtra(Intent.EXTRA_TEXT, body); 
       startActivity(mail); 
       return true; 
       } 
      return true; 
     } 
0

जब आप mailto का पता लगाते हैं: इसे "विषय = कस्टम" में शामिल करने का प्रयास करें। कुछ इस तरह मुझे लगता है:

if (url.startsWith("mailto:")) { 
    Uri mailWithSubject = Uri.parse(url). 
      buildUpon().appendQueryParameter("subject", "Hello World!").build(); 
    Intent intent = new Intent(Intent.ACTION_VIEW, mailWithSubject); 
    ... 
} 
+0

ठीक है मैं थोड़े आपके तर्क को मानने लेकिन कैसे करना है मैं "टेलीफोन:" के लिए कोड जोड़ने लिंक अच्छी तरह से। जैसे मैंने कहा, मैं "mailto:" लिंक को हल कर सकता हूं जैसा कि मैं चाहता हूं, लेकिन कोड में "tel:" लिंक के बिना। सबसे महत्वपूर्ण बात यह है कि मैं विषय परिवर्तन के लिए केवल "mailto:" लिंक में मामूली संपादन के साथ कोड में दोनों लिंक का उपयोग कैसे करूं? – Loui

+0

आप टेलिफोन के साथ क्या करना चाहते हैं: लिंक? – ksasq

+0

दूरभाष: डायलर लॉन्च करने के लिए लिंक। मैं mailto: और tel: दोनों लिंक कर सकता हूं, लेकिन एक साथ नहीं। तो मैं mailto कैसे संपादित करूं: अपना खुद का विषय जोड़ने के लिए लिंक और टेलिफोन है: उसी विधि में डायलर लॉन्च करने के लिए लिंक? – Loui

1
@Override 
     public boolean shouldOverrideUrlLoading(WebView wv, String url) { 


      if(url.startsWith(TEL_PREFIX)) { 
       Intent intent = new Intent(Intent.ACTION_DIAL); 
       intent.setData(Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } 
      if (url.startsWith("mailto:")) { 


       String body = "Enter your Question, Enquiry or Feedback below:\n\n"; 


       Intent email = new Intent(Intent.ACTION_SEND); 
       email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
       email.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
       email.putExtra(Intent.EXTRA_TEXT, body); 
       //need this to prompts email client only 
       email.setType("message/rfc822"); 
       startActivity(Intent.createChooser(email, "Choose an Email client :")); 


       return true; 
       } 
      return false; 
     } 
    }); 
+0

यह मेरे लिए काम कर रहा है। उत्तर उत्तर mail.setType ("एप्लिकेशन/ऑक्टेट-स्ट्रीम") के लिए क्रैश हो रहा था; मैंने इसे सही किया है.धन्यवाद – user1299132

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