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