web-dev-qa-db-ja.com

Android4.4は「vnd.Android-dir / mms-sms」でSMSインテントを処理できません

私のアプリケーションにはデフォルトの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アプリを起動する機能しかありません。助けてください。

15
bluemotion

番号が入力された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を使用します。

28
AdamK

番号を挿入せずにSMSアプリを起動するには、setTypeを削除する必要があります

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("sms:"));
intent.putExtra("sms_body", "smsMsgVar");
startActivity(intent);
0
mohsen

この問題は、エミュレータでテストしているときに発生しました。

実際のデバイスでテストしてください。

0