Android デバイスの動作は、デバイスごとに大きく異なります。メールの動作が遅くなったり、デバイスが突然メモリをクリーンアップすることを決定したりして、すべての動作が一瞬遅くなる可能性があります。何かを削除する前に他のプロセスまたはスレッドが完了することを期待してタイミングに依存している場合は、火遊びをしています。
CapDroid がこの回答で行ったように、結果を得るために電子メール活動を開始することをお勧めします。
メールを送る:
int EMAIL = 101;
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/html");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[]{});
emailIntent.putExtra(android.content.Intent.EXTRA_BCC,new String[]{});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, pngUri);
startActivityForResult(emailIntent,EMAIL);
送信結果:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// TODO Auto-generated method stub
if(requestCode==EMAIL)
{
if(requestCode==EMAIL && resultCode==Activity.RESULT_OK)
{
if(myFile.exists())
myFile.delete();
Toast.makeText(mActivity, "Mail sent.", Toast.LENGTH_SHORT).show();
}
else if (requestCode==EMAIL && resultCode==Activity.RESULT_CANCELED)
{
Toast.makeText(mActivity, "Mail canceled.", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(mActivity, "Please try again.", Toast.LENGTH_SHORT).show();
}
}
}