Pocket

アプリをアンインストールしてから、androidTestでファイルの読み書きをすると、権限がないため、失敗してしまいます。

テストクラスのメンバーにGrantPermissionRuleを設定しておくと、自動で権限が許可されます。

import org.junit.Rule;
import org.junit.Test;

@RunWith(AndroidJUnit4.class)
public class TestSaveImage  {
    @Rule
    public GrantPermissionRule mGrantPermissionRule =
        GrantPermissionRule.grant(
            "android.permission.WRITE_EXTERNAL_STORAGE",
            "android.permission.READ_EXTERNAL_STORAGE"
        );

    @Before
    public void setUp() {

androidTest中の一時的な権限許可の仕組みかな、と思ったので、次のことを試しました。

アプリ情報画面の権限で、ストレージ権限をオフにしておきます。
上記のテストを実行します。
アプリ情報画面の権限を見ると、ストレージ権限がオンになっていました。

つまり、androidTest中の一時的な権限許可ではなく、アプリ情報画面の権限に反映される永続的な設定なんですね。

参考URL