我有以下代码启动发送电子邮件的意图
@Override
public void onPostExecute(File outfile) {
ProgressDialogRequestIcons d1 = (ProgressDialogRequestIcons) fm.findFragmentByTag("DIALOG_F2");
d1.dialogDismiss();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
Uri uri = Uri.fromFile(outfile);
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { getString(R.string.app_email) });
intent.putExtra(Intent.EXTRA_SUBJECT, "Icon Support for" + " " + this.getResources().getString(R.string.app_name));
intent.putExtra(Intent.EXTRA_TEXT, "I am using " + Build.DEVICE + " with Android version " + Build.VERSION.RELEASE);
this.startActivity(Intent.createChooser(intent, "Send eMail.."));
}
然而,当对话框弹出以选择要发送的应用程序时,显示时没有图标,而是
然后我尝试了另外一种方法如下,但仍然有同样的问题。
public void startEmailIntentWithPackage(File icon_request){
try{
ShareCompat.IntentBuilder.from(this)
.setType("application/zip")
.addStream(Uri.parse("file://" + icon_request.getAbsolutePath()))
.addEmailTo(getString(R.string.app_email))
.setSubject("Icon Support for" + " " + this.getResources().getString(R.string.app_name))
.setText("I am using " + Build.DEVICE + " with Android version " + Build.VERSION.RELEASE)
.setChooserTitle("Send Email..")
.startChooser();
}
catch (Exception ignored)
{
}
}
答案 0 :(得分:1)
AsyncTask
的一个烦恼是默认情况下回到序列化执行,它在API级别13中认真开始。当库在内部使用AsyncTask
时,这会变得更糟...他们自己使用executeOnExecutor()
来选择加入一个线程池。
我的猜测是:
execute()
启动任务ShareCompat
使用execute()
启动另一项任务...然后阻止,直到第一项任务完成解决方案要么:
executeOnExecutor()
或Thread
,特别是如果您不需要onPostExecute()
或onProgressUpdate()
件AsyncTask