SMSインテントを使用してAndroidタブレットからSMSを送信できるかどうか知りたいのですが。これが不可能な場合、私の選択肢は何ですか?
5 に答える
SMSインテントを使用してAndroidタブレットからSMSを送信できるかどうか知りたいのですが。
実際には「SMS」はありませんIntent
。SMSが送信される可能性のあるアクションがありますACTION_SEND
。ACTION_SENDTO
Intent
「タブレット」に関しては、平均以上の画面サイズのほとんどのデバイスにはテレフォニー機能がないため、SMSで何もできず、startActivity()
一部のデバイスに応答して送信することはできませんIntent
。
私のオプションは何ですか?
どうしてもSMSメッセージを送信できるようにする必要がある場合は<uses-feature android:name="android.hardware.telephony"/>
、マニフェストに追加してください。そうすれば、アプリはテレフォニー機能を備えたデバイスにのみインストールされます。
可能であればSMSメッセージを送信したいが、それが不可能な場合は回避する場合は、次の3つのことを行う必要があります。
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
マニフェストに追加を使用
PackageManager
しhasSystemFeature()
て、実行時に実際にテレフォニー機能があるかどうかを確認しますテレフォニー機能を備えたデバイスの場合
startActivity()
、「SMSIntent
」を呼び出す前に、デバイスにそれに応答するものがあるかどうかを確認するかPackageManager
、例外ハンドラーで呼び出しを ラップして、queryIntentActivities()
Intent
startActivity()
ActivityNotFoundException
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:"
+ phoneNumber)));
これを試して。
String smsNumber = "your number here";
String smsText = "Your text";
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", smsText);
startActivity(intent);
タブレットでSMSサービスを利用できるかどうかを確認する方法:
CommonsWareが彼の答えの中で方法として説明した3番目の解決策は次のとおりです。
public static boolean hasSmsService(Context context)
{
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:123456789"));
PackageManager pm = context.getPackageManager();
List<ResolveInfo> res = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(res.size() > 0)
{
return true;
}
return false;
}
}
これはあなたにとって中華なべです。それを試してみてください.........
Method :
CAll on button click event.....
sendSMS("Any text",number,sms_string);
ここで、これをoncreate()から宣言します。
public static void sendSMS(String status, String phoneNumber, String message) {
Log.e("", "Page : " + status + ", No : " + phoneNumber
+ ",Message Length: " + message.length() + ", Message : "
+ message);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}