cuốn sách gpt4 ai đã làm

Làm cách nào để gửi email có tệp đính kèm chỉ bằng ứng dụng email?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 07:51:12 25 4
mua khóa gpt4 Nike

Có hai yêu cầu:

  • Email có tệp đính kèm
  • hiện hữu ý định Trong bộ chọn, chỉ nên có ứng dụng email.

Những điều tôi biết/đã làm:

  • Ý định.ACTION_SENDTOý định.setData(Uri.parse("mailto:")) có thể đảm bảo Chỉ ứng dụng email > Ý định bộ chọn nhưng nó sẽ không nhận tệp đính kèm (đối với một số ứng dụng, như Gmail, sẽ có, nhưng cũng có rất nhiều ứng dụng sẽ bỏ qua tệp đính kèm).

  • Ý định.ACTION_SEND Có thể gửi email có tệp đính kèm. Tuy nhiên, trong ý định Trong bộ chọn, sẽ có những ứng dụng không thực sự là ứng dụng email nhưng có khả năng phản hồi nhanh Ý định.ACTION_SEND. sử dụng ý định.setType("tin nhắn/rfc822") Số lượng các ứng dụng này có thể giảm đi, nhưng không phải tất cả.

  • Trích dẫn câu trả lời này:https://stackoverflow.com/a/8550043/3952691Và gần như đã thành công trong việc đạt được mục tiêu của mình. Mã của tôi là như sau:

    riêng tư tĩnh void sendFeedbackWithAttachment(Ngữ cảnh bối cảnh, Chủ đề chuỗi) {
    Ý định ý định = Ý định mới(Intent.ACTION_SENDTO);
    ý định.setData(Uri.parse("mailto:"));

    PackageManager packageManager = context.getPackageManager();
    Danh sách ResolveInfos = packageManager.queryIntentActivities(intent, 0);
    if (resolveInfos.isEmpty()) {
    Toast.makeText(ngữ cảnh, bối cảnh.getString(R.string.error_activity_not_found),
    Toast.LENGTH_SHORT).show();
    } khác {
    // ACTION_SEND có thể được trả lời bởi một số ứng dụng không phải là ứng dụng email.
    // ACTION_SENDTO không cho phép chúng tôi chọn tệp đính kèm. Do đó, chúng tôi sử dụng.
    // ý định ACTION_SENDTO với dữ liệu email để lọc các ứng dụng email rồi gửi
    // email có tệp đính kèm của ACTION_SEND.
    List ý định = new ArrayList<>();
    Uri uri = getLatestLogUri();
    for (Thông tin về ResolveInfo: ResolveInfos) {
    Ý định i = Ý định mới(Intent.ACTION_SEND);
    i.setPackage(info.activityInfo.packageName);
    i.setClassName(info.activityInfo.packageName, info.activityInfo.name);
    i.putExtra(Intent.EXTRA_EMAIL, Chuỗi mới[] { Def.Meta.FEEDBACK_EMAIL });
    i.putExtra(Intent.EXTRA_SUBJECT, chủ đề);
    i.putExtra(Intent.EXTRA_STREAM, uri);
    ý định.add(new LabeledIntent(i, info.activityInfo.packageName,
    info.loadLabel(context.getPackageManager()), info.icon));
    }
    Trình chọn ý định = Intent.createChooser(intents.remove(0),
    bối cảnh.getString(R.string.send_feedback_to_developer));
    chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,
    ý định.toArray(new LabeledIntent[intents.size()]));
    bối cảnh.startActivity (người chọn);
    }
    }

    Tuy nhiên, trên một số thiết bị (ví dụ: Xiaomi 2S với MIUI V5, tôi không biết liệu điều này có bị ảnh hưởng bởi rom của bên thứ 3 hay không), kết quả là trống ý định Bộ chọn. Và trên Android 6.0 trở lên,Ý định.EXTRA_INITIAL_INTENTS Hình như có một số lỗi ( Trình chọn mục đích tùy chỉnh - tại sao trên Android 6 nó hiển thị các ô trống? và cái khác:https://code.google.com/p/android/issues/detail?id=202693).

Vì vậy, tôi không biết làm thế nào để đạt được mục tiêu của mình. Xin hãy giúp tôi, cảm ơn bạn trước.

câu trả lời hay nhất

Hãy thử đoạn mã sau để gửi thư

Tên tệp chuỗi = "tên tệp.vcf"; 
Định vị tệp tệp = Tệp mới (Môi trường.getExternalStorageDirectory().getAbsolutePath(), tên tệp);
Đường dẫn Uri = Uri.fromFile(filelocation);
Email ý địnhIntent = Ý định mới(Intent.ACTION_SEND);
// đặt loại thành 'email'
emailIntent .setType("vnd.android.cursor.dir/email");
Chuỗi tới [] = {"asd@gmail.com"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, tới);
// phần đính kèm
emailIntent .putExtra(Intent.EXTRA_STREAM, đường dẫn);
// chủ đề thư
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Chủ đề");
startActivity(Intent.createChooser(emailIntent, "Gửi email..."));

Làm cách nào để gửi email có tệp đính kèm chỉ bằng ứng dụng email? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/37183139/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress