0

メールやSMSなどを送信するためにいくつかのインテントを起動するアプリケーションがあります。Android4.0.4以前ではすべてのデバイスが正常に動作しているようですが、Android 4.1以降ではアプリケーションがクラッシュし、logcatに例外が送信されません。これは4.1エミュレータで再現できます。たとえば、メールの送信に使用しているコードは次のとおりです。

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, email.getSubject());
emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(email.getContent()));
emailIntent.putExtra(Intent.EXTRA_EMAIL, getRecipients(email.getTo()));
emailIntent.setType("text/html");
this.startActivityForResult(Intent.createChooser(emailIntent, "Choose Application"),1);
4

1 に答える 1

0

これは、新しいバージョンのAndroidではUIアクティビティからネットワーク操作を実行できないためです。このリンクをたどって機能させます。

private class LongOperation extends AsyncTask<String, Void, String> {

      @Override
      protected String doInBackground(String... params) {

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, email.getSubject());
emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(email.getContent()));
emailIntent.putExtra(Intent.EXTRA_EMAIL, getRecipients(email.getTo()));
emailIntent.setType("text/html");
this.startActivityForResult(Intent.createChooser(emailIntent, "Choose Application"),1);

}

            return "Executed";
      }      

      @Override
      protected void onPostExecute(String result) {
                   }

      @Override
      protected void onPreExecute() {
      }

      @Override
      protected void onProgressUpdate(Void... values) {
      }
}   
于 2013-01-23T13:23:08.037 に答える