2013-06-05 1 views
6

Android 2.3エミュレータで次のテストケースを実行すると、エラーが発生します "java.lang.SecurityException:WifiService:ユーザー10038も現在のプロセスはandroid.permission.CHANGE_WIFI_STATEを持っています。 "ロボティクスでwifiをテスト中にセキュリティ例外が発生しました

テストコード:私のマニフェストファイルで

public void testScheduledPayments() 
    { 
     solo.clickOnButton(0); 
     solo.enterText(0, "demo"); 
     solo.enterText(1,"password"); 
     solo.clickOnButton("Log In"); 
     WifiManager wifiMan = (WifiManager) solo.getCurrentActivity().getSystemService(Context.WIFI_SERVICE); 
     wifiMan.setWifiEnabled(false); 
     solo.clickOnText("Payments"); 
     solo.clickInList(2); 
     solo.waitForText("Loading paymnets"); 
     solo.clickInList(0); 
     solo.clickOnMenuItem("Logout"); 
     solo.clickOnButton("Logout"); 
     solo.finishOpenedActivities(); 
    } 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tesaptra" 
    android:versionCode="1" 
    android:versionName="1.0"> 
     <uses-sdk android:minSdkVersion="10" /> 


    <instrumentation 
     android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="com.info.native" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <uses-library android:name="android.test.runner" /> 

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

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

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

</manifest> 

そして、ここで私のログの猫ファイルが

java.lang.SecurityException: WifiService: Neither user 10038 nor current process has android.permission.CHANGE_WIFI_STATE. 
at android.os.Parcel.readException(Parcel.java:1322) 
at android.os.Parcel.readException(Parcel.java:1276) 
at android.net.wifi.IWifiManager$Stub$Proxy.setWifiEnabled(IWifiManager.java:614) 
at android.net.wifi.WifiManager.setWifiEnabled(WifiManager.java:713) 
at com.testaptra.Payments.testScheduledPaymnets(Payments.java:113) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204) 
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194) 
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) 

だ私はマニフェストにすべて権限を追加しました。 xxxでも運がありません。あなたは以下の問題に精通していますか?

ありがとうございます事前にありがとうございます

+1

ソリューションを見つけましたか? –

+0

@RenatoLochetti解決を待っていません –

答えて

8

許可はターゲットアプリケーションで設定する必要があります。テストアプリケーションでのパーミッションは完全に無視されます。つまり、instrumnetation apkにはターゲットアプリケーションよりも特権がありません。

+0

@helloworld:この解決策は私のために働いていました。両方のマニフェストにuses-permissionを入れます。 –

1

実際には、テストアプリケーションに実際のアプリケーションよりも多くの権限を与えることは可能ですが、それを行うにはAndroidのマニフェストでちょっと卑猥なことをする必要があります。

マニフェストに両方のアプリケーションに同じandroid:sharedUserIdを付けることです。これは、どちらか一方がどちらか一方にアクセス権を持つことを余分に許可すると追加されることを意味します。これを使用することで、テストアプリケーションに必要な権限を与えることが可能になります。私はこのアプローチと別のアプローチの両方を使用しました(テストアプリケーションが意図的に実行できるインテントサービスを、あなたが試しているアプリ)を試してみてください。

関連する問題