15

私のアプリケーションには、デフォルトのSMSアクティビティを開始するボタンがあり、新しいAndroid 4.4(kitkat)を除くすべてのAndroidバージョンで完全に機能しました。コードは次のとおりです。

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) }

Google がデフォルトの SMS アプリが SMS インテントを処理する方法に変更を加えたことを知っています。私のアプリはSMSアプリではありませんが、受信者番号でデフォルトのSMSアプリを起動する機能しかありません。だから助けてください。

4

4 に答える 4

34

番号が入力された SMS アプリを開始するには、action を使用します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します。

于 2013-11-13T18:10:03.160 に答える