Сообщение электронной почты застревает в папке «Исходящие» после прикрепления файла с помощью FileProvider - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь отправить электронное письмо с приложенным файлом в приложении для Android. Похоже, что электронное письмо отправлено, но никогда не появляется. Он застрял в папке «Исходящие» Gmail с сообщением «Отправка ...». Не отправляется. Я подозреваю, что код FileProvider настроен неправильно, так как электронное письмо без вложений проходит.

public void emailSurvey()
{
    int i;
    final Intent intent;
    int checkedCount = 0;
    Context mContext = this;

    //if (emailAddress.isEmpty())
    //    return;
    ArrayList<Uri> uris = new ArrayList<>();
    File externalDir = getExternalFilesDir(this.getPackageName());
    String filePath = externalDir.toString() + "/surveys" + "/";
    intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("application/zip");
    intent.putExtra(Intent.EXTRA_EMAIL, emailAddress);
    intent.putExtra(Intent.EXTRA_SUBJECT, "Survey Attached");
    intent.putExtra(android.content.Intent.EXTRA_TEXT, "Surveys attached.");

    for (i=0;i<arrayList.size();i++)
    {
        FileListItem fli = arrayList.get(i);
        try {
            if (fli.isChecked()) {
                checkedCount++;
                String fileData = fli.getFilename();
                String[] filename = fileData.split(" ");
                File checkedFile = new File(filePath + filename[0]);
                Log.v(TAG, filePath + fli.getFilename());
                checkedFile.setReadable(true, false);
                final Uri u = FileProvider.getUriForFile(mContext,"com.example.mbietsch.andoidtrafficstat.provider",checkedFile);
                mContext.grantUriPermission(mContext.getPackageName(),u,Intent.FLAG_GRANT_READ_URI_PERMISSION);
                uris.add(u);
                fli.setChecked(false);
            }
        }
        catch (NullPointerException npe)
        {
            Log.e(TAG,"Off screen");
        }
    }

    if (intent.resolveActivity(getPackageManager()) != null  && checkedCount > 0)
    {
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
         mContext.startActivity(Intent.createChooser(intent,"Surveys"));
        //startActivity(intent);
    }
    else if (checkedCount == 0)
    {
        Toast.makeText(this.getBaseContext(),"No Files Selected.",Toast.LENGTH_SHORT).show();
    }
}

XML-файл

<external-path name="survey_files" path="Android/data/com.example.mbietsch.andoidtrafficstat/files/com.example.mbietsch.andoidtrafficstat/surveys"/>

   <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.mbietsch.andoidtrafficstat.provider"
        android:grantUriPermissions="true"
        android:exported="false">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>

Я ожидаю, что письмо будет доставлено. Нет, если файл прикреплен. Я предполагаю, что я сделал что-то не так с FileProvider и разрешение не было предоставлено правильно. Но без сообщения об ошибке я застрял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...