ストックMMSソースを使用してMMSを送信したい。詳細な説明の前に、それはいくつかのアンドロイドバージョンで動作しますが、4.0.3と4.0.4で動作することを言いたいと思います。
私のサービスでは、次のコードを使用してMMSネットワーク機能を有効にするようにデバイスに要求します。
createWakeLock();
int result = mConnMgr.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, PhoneEx.FEATURE_ENABLE_MMS);
Log.v(TAG, "beginMmsConnectivity: result=" + result);
switch (result) {
case PhoneEx.APN_ALREADY_ACTIVE:
case PhoneEx.APN_REQUEST_STARTED:
acquireWakeLock();
return result;
}
throw new IOException("Cannot establish MMS connectivity");
一部のデバイス(4.0.3を実行しているXperia T)では、がにresult
等しいため、例外がスローされますPhoneEx.APN_TYPE_NOT_AVAILABLE
。MMSは私の電話設定で有効になっており、ストックmmsアプリで送信できます。
他のデバイス(4.0.4を実行しているHTC Desire S)では、問題はもう少し離れた場所にありConnectivityBroadcastReceiver
ます。これが私のコードです:
private class ConnectivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
String action = intent.getAction();
mNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
mOtherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
networkAttempt++;
if (networkAttempt < APN_RETRY_ATTEMPTS) {
// Check availability of the mobile network.
if ((mNetworkInfo == null) || (mNetworkInfo.getType() != ConnectivityManager.TYPE_MOBILE_MMS)) {
// ERROR is located here, it returns TYPE_MOBILE :s
Log.v(TAG, " type is not TYPE_MOBILE_MMS, bail");
return;
}
}
...
コメントでわかるように、mNetworkInfo.getType()
戻りますTYPE_MOBILE
が、期待していTYPE_MOBILE_MMS
ます。
だから、私の質問は次のとおりです:私は何か間違ったことをしましたか?または、それを行う別の方法はありますか?
追伸:Android2.3から3.2および4.1以降を実行しているデバイスで動作します。