development

공유 환경 설정 삭제

big-blog 2020. 2. 16. 20:40
반응형

공유 환경 설정 삭제


응용 프로그램의 SharedPreferences 데이터를 어떻게 삭제합니까?

많은 웹 서비스를 사용하여 데이터를 동기화하는 응용 프로그램을 만들고 있습니다. 테스트 목적으로 앱을 다시 시작할 때 일부 SharedPreferences 값을 지워야합니다.


특정 값을 제거하려면 SharedPreferences.Editor.remove () 다음에commit()

모두 제거하고 SharedPreferences.Editor.clear()그 뒤에commit()

반환 값에 신경 쓰지 않고 응용 프로그램의 기본 스레드 에서이 값을 사용하는 경우 apply()대신 사용하십시오.


내 해결책 :

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();

모든 환경 설정 제거 :

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();

단일 환경 설정 제거 :

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();

매번 제거 할 필요가없는 경우 다음에서 수동으로 제거 할 수 있습니다.

설정-> 응용 프로그램-> 응용 프로그램 관리-> (앱 선택)-> 데이터 지우기 또는 제거

최신 버전의 Android :

설정-> 응용 프로그램-> (앱 선택)-> 저장소-> 데이터 지우기 및 캐시 지우기


한 줄에 Android 공유 환경 설정 삭제 :-)

context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();

또는 apply비 차단 비동기 작업의 경우 :

this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();

모든 솔루션이 완전히 작동하지 않거나 죽었을 것 같습니다

활동에서 모든 SharedPreferences를 지우는 방법

      PreferenceManager.getDefaultSharedPreferences(getBaseContext()).
      edit().clear().apply();

onCreate 후 기본 활동에서 이것을 호출하십시오.

참고 * 나는 사용했다

.apply()

대신에

.commit()

commit ()을 자유롭게 선택할 수 있습니다.


루팅 된 전화 없이도 adb 셸을 사용하여이 작업을 수행 할 수 있습니다. 유일한 문제점은 앱을 디버깅 할 수 있어야한다는 것입니다.

run-as <your package name> <command>

예를 들면 다음과 같습니다.

run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db

또는 위의 작업을 수행 할 수 있지만 명령없이 앱 패키지 루트로 이동하고 앱의 컨텍스트에서 더 많은 명령을 실행할 수 있습니다.


Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();

그들 모두를 지우십시오 :

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()

클래스 정의에서

private static final String PREFERENCES = "shared_prefs";

private static final SharedPreferences sharedPreferences  = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);

수업 내부

public static void deleteAllSharePrefs(){
        sharedPreferences.edit().clear().commit();
      }

이 코드를 사용해보십시오 :

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();

API 24 (Nougat) 기준으로 다음을 수행 할 수 있습니다.

context.deleteSharedPreferences("YOUR_PREFS");

그러나 이전 버전과의 호환성이 없으므로 24 미만을 지원하는 경우 다음을 준수하십시오.

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 

기기를 사용하여 앱을 수동으로 제거 할 수도 있습니다. 그런 다음 앱을 다시 설치할 때 공유 환경 설정이 재설정되었습니다.


테스트 용인 경우. adb 명령을 사용할 수 있습니다.

adb shell pm clear <package name>

  • 특정 값을 제거하려면

SharedPreferences.Editor remove (String key) 다음에 commit () 또는 apply ()

  • 모든 값을 제거하려면

    SharedPreferences.Editor clear () 다음에 commit () 또는 apply ()


String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();

이름이 "someTag"인 저장된 공유 환경 설정이 삭제됩니다.


모든 클래스에서 모든 SharedPreference를 중앙에서 지우려면 :

public static SharedPreferences.Editor getEditor(Context context) {
    return getPreferences(context).edit();
}

다음 클래스에서 : (환경 설정이 지워 졌는지 여부를 확인할 수있는 경우 부울 커밋을 커밋하십시오)

        Navigation.getEditor(this).clear().commit();

또는 : Apply를 사용할 수 있습니다. void Navigation.getEditor (this) .clear (). apply ()를 반환합니다.


기본 설정에서 키 값 쌍을 제거하려면 다음을 쉽게 수행 할 수 있습니다.

getActivity().getSharedPreference().editor().remove("key").apply();

공유 환경 설정을 쉽게 조작 할 수있는 라이브러리도 개발했습니다. 다음 링크를 찾을 수 있습니다

https://github.com/farruhha/SimplePrefs


많은 공유 환경 설정 키가 있기 때문에 답이 없습니다.

단위 테스트 대신 Android 테스트를 실행한다고 가정 해 봅시다.

모든 shared_prefs 파일 을 반복하고 삭제하기 위해 노력하고 있습니다.

@BeforeClass는 모든 테스트 및 ActivityTestRule 전에 실행됩니다.

@BeforeClass
public static void setUp() {
    Context context = InstrumentationRegistry.getTargetContext();

    File root = context.getFilesDir().getParentFile();
    String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
    for (String fileName : sharedPreferencesFileNames) {
        context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
    }
}

new File(context.getFilesDir(), fileName).delete();

공유 환경 설정에서 파일을 삭제할 수 있습니다


use-> preferences.edit().remove("key").commit();공유 환경 설정에서 저장된 값을 삭제할 수 있습니다 .


오늘 아침에 그냥 했어. 명령 프롬프트에서 :

adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file

참고 : 기본 Android 가상 기기, Genymotion 기기 또는 실제 루팅 된 핸드셋 / 태블릿 등 루팅 된 기기가 필요합니다.

참고 URL : https://stackoverflow.com/questions/3687315/deleting-shared-preferences



반응형