- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将我的应用程序的 targetSDK 升级到 23 以上,但我遇到了一个小问题。我有一个将流量绑定(bind)到 Wifi 的 Activity (测量路由器的网络速度,即使路由器没有连接到互联网)。为了实现这一点,我的应用需要 CHANGE_NETWORK_STATE
权限。如果在 list 中声明,通常会直接授予该权限。在 Android 6.0 上(确切地说,这已在 6.0.1 IIRC 中修复)CHANGE_NETWORK_STATE
已损坏且不会被授予,因此您需要 WRITE_SETTINGS
权限。我已经为 Android 6.0 用户实现了一种授予该权限的方法,但是当我想使用 espresso 测试我的 Activity 时,我无法这样做。通过添加类似的内容来授予测试权限
@规则
public GrantPermissionRule runtimePermissionRule = GrantPermissionRule.grant(Manifest.permission.CHANGE_NETWORK_STATE);
到测试用例。这在应用程序的其他地方有效,但为此我得到了junit.framework.AssertionFailedError: Failed to grant permissions, see logcat for details
在我的测试结果中。在 logcat 中,我发现 E/GrantPermissionCallable: Permission: android.permission.WRITE_SETTINGS cannot be granted!
或与 CHANGE_NETWORK_STATE
相同,我尝试同时授予它们,但它们都没有不工作。我有没有其他方法可以在测试环境中授予权限?还是从现在开始我无法在 6.0 设备上测试此 Activity ?
最佳答案
我设法通过使用 UiAutomator 和 shell appops
命令授予权限来解决这个问题:
Instrumentation instrumentation = getInstrumentation();
UiDevice device = UiDevice.getInstance(instrumentation);
String targetPackageName = instrumentation.getTargetContext().getPackageName();
if (Build.VERSION.SDK_INT >= 23) {
String shellCommand = String.format("appops set %s WRITE_SETTINGS allow", targetPackageName);
device.executeShellCommand(shellCommand);
}
关于android - 无法测试需要棉花糖上的 CHANGE_NETWORK_STATE/WRITE_SETTINGS 权限的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50158000/
我试图在接到电话后显示 toast,我已经实现了注册广播接收器所需的所有必要内容,但它没有显示 toast。我正在尝试在 Marshmallow 设备上运行此程序 MyCallReceiver.jav
我一直在搜索如何使用 Marshmallow 验证字典的键是否具有值(必需)并且该值的类型是 bytes ,但我没有找到任何可行的方法。 Marshmallow 引用文档中没有与 bytes 数据类型
我有一个 android 应用程序,它在生产环境中运行了几年。最近,我发现应用程序中的 ListView 存在问题,滚动时会变得模糊。该问题仅在 Android Marshmallow 下出现。 He
我想在模拟器中测试我的应用程序的可访问性(特别是 Talkback),但模拟器中似乎缺少该选项。这是模拟器在辅助功能设置中的屏幕截图: 有两个选项 "ClockBack" 和 "QueryBack"
我已经定义了一个需要数据的 POST 调用: { "one" : "hello", "two" : "world", "three" : { "
我想在第二个屏幕(POS)中打开另一个应用程序,所以请帮助我在第二个屏幕上运行另一个应用程序。我获得了 Oreo 的代码,但我需要它才能从 Lollipop 运行到最新版本。 ActivityOpti
我正在使用广播接收器来检测耳机按钮的点击。下面是广播接收器的代码。 public class HeadSetButtonStateReceiver extends BroadcastReceiver
场景如下,我有一个 LoginActivity,它使用 WifiManager 来获取 IP 地址,如下所示: WifiManager wifiManager = (WifiManager)getSy
我对棉花糖很陌生,但我的问题是关于处理类似字典的对象的问题。 Marshmallow 文档中没有可行的示例。我在堆栈溢出中遇到了一个简单的例子 Original question这是答案的原始代码假设
这个问题在这里已经有了答案: Return JSON response from Flask view (14 个回答) 去年关闭。 我在 Flask 上写申请.对于 RestAPI我在用 flask
Appium 支持 Marshmallow 吗?我正在尝试选择 Marshmallow 的平台名称,但它似乎不包含它,而且我安装了最新版本的 Appium...。 最佳答案 我没有将 6.0 Mars
我的带棉花糖的 Galaxy S6 Edge 手机遇到了一个非常有趣的问题。当我进入开发者选项时。我收到的不是一长串选项列表,而是“此用户无法使用开发人员选项”的消息。据我所知,我没有任何其他用户(老
我想声明一个模式字段来接受不同的模式类型,但不是任何 . Marshmallow 是否可能出现以下情况? class SchemaA(Schema): name = String() clas
又是我,现在有一个棉花糖问题,我有以下结构: 路线.py @models.response(ParentSchema()) def get(args, model_id): return {"
This question already has answers here: How do I create a transparent Activity on Android?
我正在为 Android Marshmallow(API 级别 23)开发一个应用程序。 我有一个包含 ListView 的 Activity 。 我使用 BaseView 适配器填充该 ListVi
我有一个通过 SSLSocket 与服务器通信的应用程序。从 Android 6 我收到一个 SSLHandshakeException javax.net.ssl.SSLHandshakeExcep
我有一个使用外部存储来存储照片的应用程序。根据需要,在其 list 中请求以下权限 它使用以下内容来检索所需的目录 File sdDir = Environment .ge
在 Android 6 中,低功耗蓝牙连接参数管理似乎发生了变化。 我有一个 BLE 外围设备需要使用一些特定的连接参数(特别是连接间隔),并且我想使用 BLE 规范允许的最小连接间隔(即 7.5ms
我有一个对象层次结构和一个对应于它们的模式层次结构。此层次结构的中间级别的架构不包括特定的继承字段。我希望从它继承的模式会“继承”这个排除,但如果他们在他们的 Meta 类中添加自己的排除字段,情况似
我是一名优秀的程序员,十分优秀!