0
所以,當我點擊這個按鈕,我想發送文本到電子郵件,但是當我發送它的附件不會附帶它「無法發送附件」。內容提供商「無法發送附件」
因此,我可以發送電子郵件到其他電子郵件,但他們不會只獲得附件和電子郵件。
我能做些什麼來獲得附件的工作?
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.content.Intent;
import android.net.Uri;
import android.support.v4.app.ShareCompat;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
public class MainActivity extends ActionBarActivity
implements View.OnClickListener {
private EditText editText;
private Button buttonSaveAndShare;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
this.editText = (EditText) this.findViewById(R.id.editText);
this.buttonSaveAndShare = (Button) this.findViewById(R.id.button_save_and_share);
this.buttonSaveAndShare.setOnClickListener(this);
}
@Override
public void onClick(View inView) {
{
final String text = this.editText.getText().toString();
if (!TextUtils.isEmpty(text))//Returns true if the string is null or 0-length
{
File file = new File(getCacheDir(), "documents.txt");
writeStringToFile(text, file);
shareDocument(file);
}
}
}
public void shareDocument(File inFile) {
final Uri uri = FileProvider.getUriForFile(this, "com.visuals.mobile.filep", inFile);
ShareCompat.IntentBuilder intentBuilder = ShareCompat.IntentBuilder.from(this);
intentBuilder.setType("text/plain");
intentBuilder.setSubject(this.getString(R.string.share_subject));
intentBuilder.setStream(uri);
intentBuilder.setChooserTitle(R.string.share_title);
intentBuilder.createChooserIntent();
Intent intent = intentBuilder.getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
this.startActivity(intent);
}
public boolean writeStringToFile(final String inData, final File toFile) {
if(toFile != null){
final File parentDir = toFile.getParentFile();
if((parentDir != null) && !parentDir.exists()){
parentDir.mkdirs();
}
}
if (toFile == null) return false;
BufferedWriter output = null;
BufferedReader input = null;
try {
input = new BufferedReader(new StringReader(inData));
output = new BufferedWriter(new FileWriter(toFile));
int n = 0;
while (n != -1) {
n = input.read();
output.write(n);
}
return true;
} catch (Exception e) {
} finally {
try {
input.close();
output.close();
} catch (IOException e) {
}
}
return false;
}
}
您可以嘗試在我的'LegacyCompatCursorWrapper',這有助於'不兼容的客戶FileProvider'交易混合。該類是[我的CWAC提供程序庫](https://github.com/commonsguy/cwac-provider)的一部分,[這裏是示例應用程序](https://github.com/commonsguy/cw-omnibus/tree/master/ContentProvider/V4FileProvider)說明它的使用。只是子類'FileProvider',重寫'query()'以使用'LegacyCompatCursorWrapper',然後在''元素中註冊你的類。如果這沒有幫助,請考慮發佈與您的問題相關的Java堆棧跟蹤。 –
CommonsWare