我想使用股票彩信源發送彩信。在更多的解釋之前,我想說的是它在一些android版本上工作,但是4.0.3和4.0.4。NetworkInfo TYPE_MOBILE_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");
在某些設備(的Xperia牛逼運行4.0.3),它拋出一個異常,因爲result
等於PhoneEx.APN_TYPE_NOT_AVAILABLE
。彩信在我的手機設置中啓用,我可以發送一個與股票MMS應用程序。
在其他設備上(HTC Desire S正在運行4.0.4),問題位於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
。
所以,我的問題如下:我做錯了什麼?或者,還有其他方法可以做到嗎?
Ps:它適用於運行Android 2.3至3.2和4.1以及更高版本的設備。
顯然,問題與手機使用的APN相關聯。它似乎在HTC渴望S上工作,但不在Xperia上工作。 – Manitoba