我需要创建一个Robotium应用程序,它将使用"设置"应用程序从菜单设置 - >无线和网络 - > Wi-Fi打开/关闭WIFi.我设法在这里找到一些示例代码,演示如何通过仅使用apk文件启动应用程序.问题是我的Robotium应用程序应该与(系统)设置应用程序具有相同的签名.在尝试运行应用程序时,我收到错误消息:
测试运行失败:权限拒绝:从pid = 354开始检测ComponentInfo {com.jayway.test/android.test.InstrumentationTestRunner},因为包com.jayway.test没有与目标com匹配的签名,所以不允许使用uid = 354. android.settings
Nir*_*ava 15
我遇到了同样的问题..有一些权限只允许系统应用程序拥有.我试图使用权限adb shell dumpsys从我的应用程序访问
命令android.permission.DUMP.
对此的解决方案是......
在项目的Android清单文件中,在清单标记中添加以下行
android:sharedUserId="android.uid.system"
Run Code Online (Sandbox Code Playgroud)
您需要在代码中存在两个签名密钥,用于构建二进制文件.
platform.x509.pem
platform.pk8
存在于
安卓/编译/目标/产品/安全
从网上下载工具即
signapk.jar
从eclipse导出你的未签名的apk.通过右键单击android工具中的项目.保留文件夹中的所有内容,即键,unsigned apk和signapk.jar.运行以下命令
java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk
Run Code Online (Sandbox Code Playgroud)
unsigned apk是你的apk的名字,而signed apk是你想要的新名字.在此之后,只需使用命令在手机中安装已签名的应用程序
adb shell install signed.apk
Run Code Online (Sandbox Code Playgroud)
从应用程序启用 wifi 的最佳方法是使用WifiManager。
WifiManager wManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if(!wManager.isWifiEnabled() && wManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING)
wManager.setWifiEnabled(true);
Run Code Online (Sandbox Code Playgroud)
注意:您还必须将以下权限添加到清单中
<uses-permission android:name="android.permissions.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permissions.CHANGE_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)