gpt4 book ai didi

android - 如何在从 ActivityInstrumentationTestCase2 派生的类中使用 WifiManager 设置 Wifi 状态?

转载 作者:太空狗 更新时间:2023-10-29 13:30:22 24 4
gpt4 key购买 nike

我有自动化的 UI android 仪器测试,需要为特定测试用例打开/关闭 Wifi。我认为这是小菜一碟,但我遇到了一些麻烦。我需要在我的测试代码的 list APK 中拥有打开/关闭系统服务的权限。我不想修改我正在测试的应用程序的 list 。

这是我的测试代码的 AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

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

<application android:label="UI Tests">
<uses-library android:name="android.test.runner"/>
</application>

<instrumentation android:name="com.mycompany.test.InstrumentationTestRunner"
android:targetPackage="com.mycompany"
android:label="UI Tests"/>

当我看到安装的测试 apk 时,它在实际设备上肯定具有所有这些权限。

现在这是我尝试设置 Wifi 状态的代码...

    WifiManager wifi = (WifiManager) getInstrumentation().getContext().getSystemService(Context.WIFI_SERVICE);
if ((!wifiEnabled) && (wifi.getWifiState() != WifiManager.WIFI_STATE_DISABLED)){
mTestLogger.logMsg("Turning off wifi");
wifi.setWifiEnabled(false);
sleep(3000);
}

我认为这段代码是正确的。 getInstrumenation().getContext() 是测试代码的 apk 上下文。但是,当它使用 wifi.setWifiEnabled(false) 时,它会抛出异常:

java.lang.SecurityException: WifiService: 用户 10145 和当前进程都没有 android.permission.CHANGE_WIFI_STATE。

知道我做错了什么吗? list 显然有 CHANGE_WIFI_STATE,我在设备上确认权限设置正确。

我一定有错误的上下文。 getInstrumentation().getContext().getApplicationInfo() 为我的测试 apk 提供了正确的信息。所以我觉得很合适。

最佳答案

这是有道理的。 Context 带有一组权限。根据您的解释,getInstrumentation().getContext() 返回正在测试的应用程序的上下文,因此返回该应用程序的权限。如果您使用该上下文来操作 wifi 并且应用程序没有适当的权限,则无论您自己的权限如何,操作都会失败。

关于android - 如何在从 ActivityInstrumentationTestCase2 派生的类中使用 WifiManager 设置 Wifi 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com