私のアプリケーションにはデフォルトのSMSアクティビティを開始するボタンがあり、すべてAndroid新しいバージョンを除くバージョン、Android 4.4(KitKat))は完全に正常に機能しました。コードは次のとおりです。
public void onClick(View arg0) {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.Android-dir/mms-sms");
smsIntent.putExtra("address", member.getPhoneNumber().trim());
context.startActivity(smsIntent);
}
そして、私はエラーメッセージを受け取ります
11-08 02:08:32.815: E/AndroidRuntime(14733): Android.content.ActivityNotFoundException: No Activity found to handle Intent { act=Android.intent.action.VIEW typ=vnd.Android-dir/mms-sms (has extras) }
私はグーグルがデフォルトのSMSアプリがSMSインテントを処理する方法にいくつかの変更を加えたことを知っています。しかし、私のアプリはSMSアプリではありませんが、受信者番号でデフォルトのSMSアプリを起動する機能しかありません。助けてください。
番号が入力されたSMSアプリを開始するには、アクションACTION_SENDTO
を使用します:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + Uri.encode(phoneNumber)));
startActivity(intent);
これはAndroid 4.4で機能します。以前のバージョンのAndroidでも機能するはずですが、APIは公開されていないため、動作が異なる可能性があります。以前の方法に問題がない場合は、4.4より前の方法に固執し、4.4以降ではACTION_SENDTO
を使用します。
番号を挿入せずにSMSアプリを起動するには、setTypeを削除する必要があります
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("sms:"));
intent.putExtra("sms_body", "smsMsgVar");
startActivity(intent);
この問題は、エミュレータでテストしているときに発生しました。
実際のデバイスでテストしてください。