2011-04-23 87 views

回答

6

权限是必需的。

我刚刚写了这个应用程序,切换Wifi。

清单

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.stackoverflow.q5766518" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk 
     android:minSdkVersion="3" /> 

    <uses-permission 
     android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission 
     android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission 
     android:name="android.permission.WAKE_LOCK" /> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name"> 
     <activity 
      android:name=".Main" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action 
        android:name="android.intent.action.MAIN" /> 
       <category 
        android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest>

布局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Button 
     android:id="@+id/my_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Toggle Wifi" /> 
</LinearLayout>

主要活动

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final Button myButton = (Button) findViewById(R.id.my_button); 
    myButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
     final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     wifi.setWifiEnabled(!wifi.isWifiEnabled()); 
     } 
    }); 
    }
1

WIFI_ON is a secure setting;只有由系统固件签名的应用程序才能拥有适当的权限并使用SDK进行调整。


UPDATE

setWifiEnabled()可能支持这一点,因为在评论中指出。我没有看到需要权限的证据,但是如果有的话,你会得到一个堆栈跟踪,指出需要什么。我忘记了这条道路。

+3

WifiManager和所有切换Wifi开启/关闭的应用程序小部件怎么样? http://developer.android.com/reference/android/net/wifi/WifiManager.html – 2011-04-23 20:30:10

+1

@Thane Anthem:啊,我的道歉。 'setWifiEnabled()'似乎支持这一点,并且对源代码的快速扫描并不显示任何需要许可的迹象(这是适度的干扰)。我会暂时更新我的​​答案。 – CommonsWare 2011-04-23 20:37:01

+0

权限确实似乎是必需的,因为我在编写我在此主题中其他位置发布的应用程序时收到有关缺少三个权限的错误。 – 2011-04-23 21:23:32

0

是,其可能的。 wifimangr.setWifiEnabled(假);

创建Wifimanager..and的目的调用方法setWifiEnabled为 “false”。 wifimangr。setWifiEnabled(假);

你需要CHANGE_WIFI_STATE许可待办事项这一点。

相关问题