Android应用程序设置连接类型

时间:2010-02-09 15:56:54

标签: android connection gprs

我正在为android编写一个应用程序。我的问题是我希望它强制在GPRS中连接而不使用wi fi。我有一个类似下面的解决方案,但这会导致应用程序在开始时崩溃。

ConnectivityManager CM = 
    (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
CM.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);

我还将以下设置行添加到清单文件中。

uses-permission android:name="android.permission.WRITE_SETTINGS" 
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"
uses-permission android:name="android.permission.CHANGE_CONFIGURATION" 
uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" 

有人知道这个问题,还是设置连接类型的答案?

2 个答案:

答案 0 :(得分:1)

  

我的问题是我希望它强制执行   GPRS中的连接而不使用wi   网络连接。

今天Android无法实现,抱歉。

答案 1 :(得分:1)

您可以查看Wi-Fi是否已开启,而在Android 2.0及更高版本中,您可以通过编程方式启用或禁用Wi-Fi。在Android 1.x中,您可以做的最好的事情就是告诉用户必须禁用它并将它们指向“设置”页面。

/**
 * Checks if Wi-Fi is on. 
 * 
 * @return true, if Wi-fi is on.
 */
public static boolean isWiFiOn()
{
    WifiManager wifi = (WifiManager) MyAccountApplication.getContext().getSystemService(Context.WIFI_SERVICE);

    if (wifi == null)
        return false;

    List<WifiConfiguration> config = wifi.getConfiguredNetworks();

    if (config != null)
        for (int i = 0; i < config.size(); i++)
        {
            if (config.get(i).status == WifiConfiguration.Status.CURRENT)
            {
                return true;
            }
        }
    return false;
}

public static void setWiFi(Context context, boolean enabled)
{
    WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

    if (wifi != null)
        wifi.setWifiEnabled(enabled);
}