2014-12-17 21 views
5

Tôi mới làm quen với điều này nhưng điều gì sai với đoạn mã của tôi? Tôi gặp lỗi: 'Hành động này hiện không được hỗ trợ' khi tôi chọn liên kết. Đây là mã của tôi:Mailto Android: Lỗi 'Hành động không được hỗ trợ'

public void addEmail() { 

    TextView txt = (TextView) findViewById(R.id.emailtext); 

    txt.setOnClickListener(new View.OnClickListener(){ 


     public void onClick(View v){ 
      Intent intent = new Intent(); 
      String uriText = 
        "mailto:[email protected]" + 
        "?subject=" + URLEncoder.encode("some subject text here") + 
        "&body=" + URLEncoder.encode("some text here"); 

       Uri uri = Uri.parse(uriText); 

       Intent sendIntent = new Intent(Intent.ACTION_SENDTO); 
       sendIntent.setData(uri); 
       startActivity(Intent.createChooser(sendIntent, "Send email")); 

    }}); 

} 

Rất cám ơn!

+0

@see https://stackoverflow.com/questions/2197741/how-can-i-send-emails-from- my-android-application – shkschneider

+0

@shkschneider, cách giải quyết lỗi đó? – Sam

+0

Tôi gặp phải điều này trong trình giả lập Android 4.0.2 khi tôi chưa thiết lập tài khoản email trong ứng dụng email Android. Thiết lập tài khoản trong ứng dụng khách đã khắc phục được sự cố. – Sam

Trả lời

1

Hãy thử điều này, nó làm việc cho tôi:

public void addEmail() { 

    TextView txt = (TextView) findViewById(R.id.emailtext); 

    txt.setOnClickListener(new View.OnClickListener(){ 

    public void onClick(View v){ 

      String[] emails = {"[email protected]"}; 
      String subject = "your subject"; 
      String message = "your message"; 

      Intent email = new Intent(Intent.ACTION_SEND); 
      email.putExtra(Intent.EXTRA_EMAIL, emails); 
      email.putExtra(Intent.EXTRA_SUBJECT, subject); 
      email.putExtra(Intent.EXTRA_TEXT, message); 

      // need this to prompts email client only 
      email.setType("message/rfc822"); 

      startActivity(Intent.createChooser(email, "Choose an Email client :")); 
    }}); 

} 
+0

Tôi đã kiểm tra và xác nhận rằng công trình này hoạt động. Có vẻ như vấn đề đã được gây ra bằng cách sử dụng 'setData()' khi không có ứng dụng nào khớp với mục đích. – Sam

13

Vấn đề có lẽ rằng bạn đang chạy trên một trong những giả lập Android chính thức và bạn chưa thiết lập tài khoản email trên đó. Các trình giả lập mở hoạt động com.android.fallback.Fallback khi điều này xảy ra, nhưng điều này dường như không xảy ra trên các thiết bị trong thế giới thực.

Bạn thể phát hiện điều này trước khi cố gắng để bắt đầu ý định sử dụng mã này:

ComponentName emailApp = intent.resolveActivity(getPackageManager()); 
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback"); 
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction); 
Các vấn đề liên quan