0

一部のデータをメールで送信する Android アプリがあります。同じデータをクリアする AlertDialog 確認ボックスを起動するボタンもあります。

アプリの通常の流れは次のとおりです。PDF ファイルにデータを入力 -> PDF 添付ファイル付きの電子メールを送信 -> ボタンを押してデータをクリアし、繰り返します。

私の質問は次のとおりです。ユーザーが電子メールを送信する前にデータを消去することは人間的に可能ですか (そのため、データはすべて空白になります)? バグが原因で、ユーザーに空メールを送信してほしくありません。私がこの質問をしている理由は、メール アクティビティが起動された後に最初にデータが消去され (これはノーノーです)、空白のデータを送信していたためです。メールアクティビティで StartActivityForResult() を使用する方法を探してみたので、アクティビティが終了したときにデータを破棄できますが、これは可能ではないようです。電子メール活動は終了するはずなので、確認ボックスで行うのは安全だと思いますが、これが安全であることを絶対に確認したいだけです.

4

1 に答える 1

0

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();
                }
            }   
        }
于 2013-07-09T06:22:43.883 に答える