2012-07-17 31 views
21

Tôi cố gắng để gửi dữ liệu sử dụng mã này:"Không Hoạt động phát hiện để xử lý Ý định" trong khi gửi email dữ liệu

email = (Button) findViewById(R.id.enail); 
    email.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      Intent emailIntent = new Intent(
        android.content.Intent.ACTION_SEND); 
      emailIntent.setAction(Intent.ACTION_SEND); 
      emailIntent.setType("message/rfc822"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
        new String[] { "" }); 
      emailIntent.putExtra(android.content.Intent.EXTRA_CC, ""); 
      emailIntent.putExtra(android.content.Intent.EXTRA_BCC, ""); 
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
        "Playlist Details"); 
      emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail)); 
      emailIntent.setType("text/html"); 
      startActivity(emailIntent); 

     } 
    }); 

Nhưng nó ném các lỗi sau:

07-17 12:31:33.438: E/AndroidRuntime(498): FATAL EXCEPTION: main 
07-17 12:31:33.438: E/AndroidRuntime(498): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND (has extras) } 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Activity.startActivityForResult(Activity.java:2817) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Activity.startActivity(Activity.java:2923) 
07-17 12:31:33.438: E/AndroidRuntime(498): at com.playlist.ViewPlayList$3.onClick(ViewPlayList.java:93) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.view.View.performClick(View.java:2408) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.view.View$PerformClick.run(View.java:8816) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.os.Handler.handleCallback(Handler.java:587) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.os.Looper.loop(Looper.java:123) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-17 12:31:33.438: E/AndroidRuntime(498): at java.lang.reflect.Method.invokeNative(Native Method) 
07-17 12:31:33.438: E/AndroidRuntime(498): at java.lang.reflect.Method.invoke(Method.java:521) 
07-17 12:31:33.438: E/AndroidRuntime(498): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-17 12:31:33.438: E/AndroidRuntime(498): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-17 12:31:33.438: E/AndroidRuntime(498): at dalvik.system.NativeStart.main(Native Method) 

Xin hãy giúp tôi.

+0

Bạn có các quyền cần thiết không? – Abhilasha

+0

bạn đang sử dụng phiên bản hệ điều hành nào để kiểm tra và bạn đang thử nghiệm thiết bị nào? – overbet13

+0

và chính xác những gì chứa 'Chi tiết'? – overbet13

Trả lời

12

Tôi đã thử nghiệm điều này trên thiết bị của mình và mã hoạt động hoàn hảo. Và tôi testet mã này trên một trình mô phỏng, và nó đã bị hỏng. Vấn đề là hệ điều hành không tìm thấy bất kỳ hoạt động nào có thể xử lý ACTION_SEND này. Bao quanh loại mã này mọi lúc với try/catch, vì bạn không thể chắc chắn liệu có tồn tại một hoạt động như vậy có thể xử lý ý định của bạn hay không. Và cố gắng cài đặt ít nhất một ứng dụng có thể xử lý ACTION_SEND, sau đó thử lại và xem ứng dụng có phù hợp với bạn hay không.

+0

có quyền, nó không phải là lỗi trong thiết bị –

+0

thay vì xung quanh nó bằng cách thử bắt, bạn có thể và bạn chỉ nên kiểm tra xem có bao nhiêu hoạt động có thể xử lý ý định ... ví dụ bạn có thể làm: PackageManager packageManager = getActivity(). getPackageManager(); nếu (intent.resolveActivity (packageManager)! = Null) { // có một hoạt động có thể xử lý nó } else // không có hoạt động nào có thể xử lý được) – Patric

1

Có vấn đề là ở giả lập vì nó không được cấu hình bất kỳ email trong giả lập, nếu bất kỳ một thấy vấn đề này xin vui lòng cấu hình email trong giả lập của bạn, để làm điều này

chọn email từ menu ứng dụng và làm theo các bước.

4

cố gắng sử dụng điều này để thực hành tốt hơn hiển thị thông báo cho người dùng để thiết lập ứng dụng thư.

try{ 

// you email code here 

} catch (ActivityNotFoundException e) { 
// show message to user 
} 
47

Gọi StartActivity phương pháp theo cách sau:

Intent emailIntent = new Intent(
         android.content.Intent.ACTION_SEND); 
       emailIntent.setAction(Intent.ACTION_SEND); 
       emailIntent.setType("message/rfc822"); 
       emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
         new String[] { "" }); 
       emailIntent.putExtra(android.content.Intent.EXTRA_CC, ""); 
       emailIntent.putExtra(android.content.Intent.EXTRA_BCC, ""); 
       emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
         "Playlist Details"); 
       emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail)); 
       emailIntent.setType("text/html"); 

// FOLLOWING STATEMENT CHECKS WHETHER THERE IS ANY APP THAT CAN HANDLE OUR EMAIL INTENT 
startActivity(Intent.createChooser(emailIntent, 
         "Send Email Using: ")); 

Nếu hệ thống không tìm thấy bất kỳ ứng dụng eamil, A Dialog đẹp sẽ được hiển thị:

enter image description here


Tôi biết rằng tôi đang trả lời một câu hỏi cũ, nhưng có lẽ nó có thể giúp ai đó.

+0

Đây là giải pháp tuyệt vời cho vấn đề này .Cảm ơn bạn! – wblaschko

1

Có một nguyên nhân khác gây ra ngoại lệ này.

Ứng dụng của tôi gửi email trong hai điều kiện khác nhau. Một điều kiện tôi đặt trường Đến: - yêu cầu Intent.ACTION_SENDTO

Nhưng Intent.ACTION_SENDTO gây ra ngoại lệ được mô tả trong điều kiện khác của tôi nơi To: không được cung cấp. Trong điều kiện đó Intent.ACTION_SEND là bắt buộc.

Các vấn đề liên quan