Я пишу приложение для Android. Это приложение построено поверх Gmail. Я хочу добавить возможность прикреплять файлы из других приложений. Первое приложение, над которым я работаю, - это специальное приложение Box (сделанное с помощью окна sdk). В настоящее время я могу отправить намерение, открыть мероприятие в приложении «Ящик», выбрать вложение и вернуться. Однако в моем приложении Box-SDK после выбора элемента я понятия не имею, как превратить его в данные, которые я могу правильно отправить обратно в свое приложение Gmail (или любой исходный отправитель намерения). Я также не знаю, как отправить эти данные отправителю намерения.Как отреагировать на 'attach' из Gmail? Ответ на намерение с приложением
Я знаю, что setResult() задействован, но я не уверен, куда его поместить или как правильно его использовать для переноса данных, выбранных в поле в приложении электронной почты.
Что происходит в данный момент, оно просто возвращается в gmail без вложения и говорит, что загрузка завершена.
Вот код, который я в настоящее время:
private void onFileSelected(final int resultCode, final Intent data) {
if (Activity.RESULT_OK != resultCode) {
Toast.makeText(this, "fail", Toast.LENGTH_LONG).show();
}
else {
final BoxAndroidFile file = data.getParcelableExtra(FilePickerActivity.EXTRA_BOX_ANDROID_FILE);
AsyncTask<Null, Integer, Null> task = new AsyncTask<Null, Integer, Null>() {
@Override
protected void onPostExecute(Null result) {
Toast.makeText(MainActivity.this, "done downloading", Toast.LENGTH_LONG).show();
// Intent result2 = new Intent();
// result2.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" +));
// setResult(Activity.RESULT_OK, result2);
//// setResult(resultCode, data);
super.onPostExecute(result);
finish();
}
@Override
protected void onPreExecute() {
Toast.makeText(MainActivity.this, "start downloading", Toast.LENGTH_LONG).show();
super.onPreExecute();
}
@Override
protected Null doInBackground(Null... params) {
BoxAndroidClient client = ((HelloWorldApplication) getApplication()).getClient();
try {
File f = new File(Environment.getExternalStorageDirectory(), file.getName());
Intent result2 = new Intent();
result2.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + f.getAbsolutePath()));
setResult(Activity.RESULT_OK, data);
// setResult(resultCode, data);
System.out.println(f.getAbsolutePath());
client.getFilesManager().downloadFile(file.getId(), f, null, null);
}
catch (Exception e) {
}
return null;
}
};
task.execute();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AUTH_REQUEST) {
onAuthenticated(resultCode, data);
}
else if (requestCode == UPLOAD_REQUEST) {
onFolderSelected(resultCode, data);
}
else if (requestCode == DOWNLOAD_REQUEST) {
onFileSelected(resultCode, data);
}
}
мне удалось понять это, установив результат нового намерения с файлом URI в качестве дополнительного намерение result2 = новый Intent(); result2.setData (Uri .parse ("file: //" + f.getAbsol utePath())); getActivity(). SetResult (Activity.RESULT_OK, result2); –