【问题标题】:Android Integration test application permissionsAndroid集成测试应用权限
【发布时间】:2013-08-03 18:07:42
【问题描述】:

我正在寻找一种方法来在我的集成测试中获取当前设备的序列号。

现在,打电话时

TelephonyManager manager = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = manager.getDeviceId();

在我的测试方法中,我得到java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10227 nor current process has android.permission.READ_PHONE_STATE.

我在我的测试项目AndroidManifest.xml 中添加了<uses-permission android:name="android.permission.READ_PHONE_STATE"/>,但这并没有帮助。

【问题讨论】:

    标签: android android-testing android-permissions


    【解决方案1】:

    您应该检查您的应用程序的 AndroidManifest.xml 中是否添加了 Read_Phone_State 权限。

    像这样::

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

    如果不存在,请添加它,因为您的测试用例不能拥有比您的应用程序更多的权限。

    【讨论】:

    • 那么在testcase中就无法访问当前设备的序列号了。因为,您的测试用例不能拥有比您的应用程序更多的权限
    • 添加以上行后,我仍然遇到问题如何解决它
    • @karthikpamidimarri 您是否检查了清单文件(主应用程序和测试应用程序)中是否存在权限
    • 在获得许可的情况下,我也遇到了同样的问题。最后,为了开发,我对字符串 deviceId 进行了硬编码。但对于生产我使用 getDeviceId();它在模拟器中工作。
    猜你喜欢
    • 2014-09-30
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多