Android应用程序设置连接类型

Android应用程序设置连接类型,android,connection,gprs,Android,Connection,Gprs,我正在为android编写一个应用程序。我的问题是,我希望它强制连接GPRS,而不是使用wi-fi。我有如下解决方案,但这会导致应用程序在启动时崩溃 ConnectivityManager CM = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); CM.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 我还将下面的设置行添加

我正在为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" 
是否有人知道该问题,或设置连接类型的答案

我的问题是我想让它强制 使用GPRS连接,不使用wi-Fi 菲


抱歉,这在今天的Android系统中是不可能的。

您可以检查Wi-Fi是否已打开,在Android 2.0及更高版本中,您可以通过编程方式启用或禁用Wi-Fi。在Android1.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);
}
/**
*检查Wi-Fi是否已打开。
* 
*@return true,如果Wi-fi已打开。
*/
公共静态布尔值isWiFiOn()
{
WifiManager wifi=(WifiManager)MyAccountApplication.getContext().getSystemService(Context.wifi\u SERVICE);
如果(wifi==null)
返回false;
List config=wifi.getConfiguredNetworks();
如果(配置!=null)
对于(int i=0;i
我将利用
LogCat
,您将使用
Log
类在您认为可能存在问题的代码中留下调试语句,并且在
LogCat
窗口中,您可以看到导致崩溃的原因的跟踪。执行此操作,运行应用程序,如果它崩溃,请查看控制台窗口中导致崩溃的原因并将其发布回此处。emulator的问题是关于写入\u安全\u设置权限,我已将其添加到清单中。现在它说应用程序抛出securityException。我发现,要更改安全设置,应用程序的标志必须与手机本身相同,但我不确定此信息。所以我想在安卓系统中可能真的不可能做到这一点。