Android에서 앱에서 공유 기본 설정 데이터를 삭제하는 방법
응용프로그램에 대한 공유 환경설정 데이터를 삭제하려면 어떻게 해야 합니까?
저는 많은 웹 서비스를 사용하여 데이터를 동기화하는 응용 프로그램을 만들고 있습니다.테스트를 위해 앱을 다시 시작할 때 일부 공유 기본 설정 값을 삭제해야 합니다.
특정 값을 제거하는 방법공유 기본 설정.Editor.remove() 뒤에 다음과 같이 입력합니다.commit()
SharedPreferences.Editor.clear()
에 다에가 .commit()
이 없고메인 에서 반환 반환값중지않응프의램메로인경우스반서환사는값하용을에레드그이용고요하▁using▁if경우▁and▁consider,▁value▁this▁return는▁fromation하사'반용환▁you값을반▁your환▁you서▁the를 사용하는 것을 고려해 보세요.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();
모든 솔루션이 완전히 작동하지 않거나 완전히 작동하지 않는 것 같습니다.
활동의 모든 공유 환경설정을 지웁니다.
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
작성 후 기본 활동에서 호출
참고* 제가 사용했습니다..apply()
에 .commit()
커밋(commit)을 선택할 수 있습니다.
API 24(Nougat)를 기준으로 다음과 같은 작업을 수행할 수 있습니다.
context.deleteSharedPreferences("YOUR_PREFS");
그러나 이전 버전과의 호환성은 없으므로 24 미만을 지원하는 경우 다음 사항을 준수하십시오.
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
클래스 정의:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
클래스 내부:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().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()
Kotlin 사용자에게는 매우 쉽습니다.
val sharedPref = context.getSharedPreferences("myPref", Context.MODE_PRIVATE)
sharedPref.edit().clear().apply()
이 코드를 사용해 보십시오.
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
당신의 테스트를 위한 것이라면.adb 명령을 사용할 수 있습니다.
adb shell pm clear <package name>
여기 있는 다른 답변에서 제안한 대로 언제든지 프로그래밍 방식으로 실행할 수 있습니다.하지만 개발 목적을 위해, 저는 이것을 발견합니다.Plugin
개발 속도가 상당히 빨라지기 때문에 매우 도움이 됩니다.
플러그인: ADB 아이디어
버튼 클릭만으로 Android Studio 자체에서 앱 데이터를 지우고 권한을 취소할 수 있는 기능을 제공합니다.
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();
이름이 "someTag"인 저장된 공유 기본 설정이 삭제됩니다.
기본 설정에서 키-값 쌍을 제거하려면 다음 작업을 쉽게 수행할 수 있습니다.
getActivity().getSharedPreference().edit().remove("key").apply();
공유 선호도를 쉽게 조작할 수 있는 라이브러리도 개발했습니다.다음 링크를 찾을 수 있습니다.
https://github.com/farruhha/SimplePrefs
모든 클래스에서 모든 공유 환경설정을 중앙에서 지우려면:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
그런 다음 모든 클래스에서 다음을 수행합니다. (commit은 기본 설정이 지워졌는지 확인할 수 있는 부울을 반환합니다.
Navigation.getEditor(this).clear().commit();
또는 apply를 사용할 수 있습니다. void를 반환합니다.
Navigation.getEditor(this).clear().apply();
- 특정 값을 제거하려면,
공유 기본 설정.편집기 제거(문자열 키) 뒤에 커밋() 또는 apply()가 표시됩니다.
모든 값을 제거하려면,
공유 기본 설정.편집자 clear() 뒤에 commit() 또는 apply()가 옵니다.
모든 기본 설정을 지우는 Kotlin ktx 방법:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
예제가 포함된 모든 공유 기본 설정 작업을 보려면 여기를 클릭하십시오.
코틀린 코드 한 줄:
getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE).edit().clear().apply()
공유 기본 설정 키가 많기 때문에 사용할 수 있는 대답이 없습니다.
유닛 테스트 대신 Android 테스트를 실행한다고 가정해 보겠습니다.
모든 shared_prefs 파일을 통해 루프 및 삭제할 수 있습니다.
@모든 테스트 및 활동 전에 BeforeClass가 실행됩니다.테스트 규칙
@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();
공유 환경설정에 있는 파일을 삭제할 수 있습니다.
내 대답:
Java의 경우:
SharedPreferences myPrefs = context.getSharedPreferences("My_Pref", Context.MODE_PRIVATE);
myPrefs.edit().remove("my_key").apply();
코틀린에서:
val myPrefs = context.getSharedPreferences("My_Pref", Context.MODE_PRIVATE)
myPrefs.edit().remove("my_key").apply()
코틀린:
var prefs2: SharedPreferences? = context!!.getSharedPreferences("loginFB", 0)
prefs2!!.edit().remove("email").commit()
내 방법은 다음과 같습니다.
public fun clearAllSharedPrefs() {
val sharedPreferences: SharedPreferences = MainApplication.applicationContext()
.getSharedPreferences("MY_CUSTOME_KEY", Context.MODE_PRIVATE)
sharedPreferences.edit().clear()
sharedPreferences.edit().apply()
}
사용할 수 있습니다.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/how-to-delete-shared-preferences-data-from-app-in-android
'programing' 카테고리의 다른 글
vuex '상수' 명명된 작업을 변수와 함께 참조하려면 어떻게 해야 합니까? (0) | 2023.06.11 |
---|---|
jQuery에서 일치하는 요소의 요소 유형을 확인하려면 어떻게 해야 합니까? (0) | 2023.06.11 |
금액 열과 차변 대변 열만 있는 테이블에서 평가판 잔액 표시를 위한 전표 선택 (0) | 2023.06.11 |
사용자 정의 필드에 사용자 정의 분류법 용어 ID 사용 (0) | 2023.06.11 |
Panda.Int64 미래 경고에 대한 인덱스 수정 (0) | 2023.06.11 |