Android에서 응용 프로그램을 제거하는 동안 공유 기본 설정을 제거하는 방법


103

나는 그것을 통해 사용자 이름 및 암호와 같은 로그인 세부 정보를 저장하는 안드로이드 응용 프로그램이 SharedPreferences있지만 SharedPreferences응용 프로그램을 제거 하는 동안 사용한 모든 것을 제거해야합니다 . 어떻게하나요?

SavePreferences("one ", "");
SavePreferences("two", "");
LoadPreferences();

 private void SavePreferences(String key, String value){
    sharedPreferences = getSharedPreferences("TEST", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
   }

 private void LoadPreferences(){
    sharedPreferences = getSharedPreferences("TEST", MODE_PRIVATE);
    String strSavedMem1 = sharedPreferences.getString("MEM1", "");
    String strSavedMem2 = sharedPreferences.getString("MEM2", "");   
   } 

SharedPreferences내 응용 프로그램을 제거 할 때 이것을 제거하고 싶습니다 .


11
이 ... 응용 프로그램 설치 제거에 안드로이드 OS에 의해 자동으로 제거됩니다
— umair.ali

worthful 세부 사항에 대한 감사
— shivcena

내 뿌리 Samsung Galaxy 1 (Froyo)에는 없습니다. 여전히에 남아 있습니다 /dbdata/database/my.package/shared_prefs. 이것이 뿌리 때문인지 Froyo 때문인지 모르겠습니다. 최신 장치로 테스트 할 수 없음
— Nilzor 2014 년

답변:


19

SharedPreferences 앱 제거와 함께 항상 삭제됩니다.

응용 프로그램을 제거하면 응용 프로그램이 내부 메모리에서 수행 한 모든 변경 사항이 취소됩니다. 즉, SharedPreference 파일, 기타 데이터 파일, 데이터베이스 파일, 응용 프로그램이 Android OS에 의해 자동으로 제거됩니다.

편집 : 29/04/15 :> = 21 API의 경우 @Maher Abuthraa의 답변을 참조하십시오.


10
Nexus 6P의 경우가 아니라 지금 확인 중입니다.
— AndyRoid

1
예, Android 6에서 실행되는 Nexus 5에서도 공유 환경 설정이 삭제되지 않는 것으로 나타났습니다. 나는 제거 후 장치를 다시 시작했다 그리고 된 SharedPreferences는 이제 사라
— Santhana

2
여기에 같은 문제가있는 Galaxy s7. 제거하고 설치 후에도 공유 기본 설정이 여전히 설정되어 있습니다. 제거만으로 새로 설치를 테스트 할 수 없기 때문에 정말 짜증납니다.
— Dpedrinha

2
@Maher Abuthraa는 정답이 있습니다.
— Юрій Мазуревич apr

1
Samsung s8 s8 + 장치는 공유 기본 설정을 삭제하지 않고 최근에 테스트했습니다. 삼성에 정말 실망
— Vrajesh

299

문제는 선호도가 아닙니다. 과감하게 백업 관리자입니다 ! .. 기본적으로 android-23 이후 작업으로 백업은 환경 설정을 포함한 앱의 데이터를 클라우드에 저장합니다. 나중에 제거하고 새 버전을 설치할 때 복원 된 기본 설정을 사용하게 될 것입니다. 이를 방지하려면 다음을 매니페스트에 추가하거나 적어도 매니페스트를 디버그하기 만하면됩니다.

<application ...
        android:allowBackup="false">
...
</application>

이것을 읽으십시오 : http://developer.android.com/guide/topics/data/backup.html

Lint를 Android > Lint > Security다음에서 실행하면 알 수 있습니다 .

백업시 린트 경고

백업 프로세스가 블랙 박스와 같다는 것을 여기서 언급하는 것이 좋습니다. 언제 시작되는지, 검사 사이의 기간을 알지 못하므로 개발을 비활성화하는 것이 좋습니다.

==== 업데이트 ====

당신은 설정 후 매니페스트 합병 문제가 발생할 수 있습니다 allowbackup로 false. 이 문제를 해결하려면 다음을 추가하십시오.

tools:replace="android:allowBackup"

애플리케이션 요소에서. @ shahzain-ali에 대한 크레딧

또는 앱을 제거하기 전에 캐시를 지울 수 있습니다.

도움이 되길 바랍니다.


4
이봐 요, 일부 장치에서는 장치를 다시 시작한 후에도 공유 기본 설정이 유지된다는 것을 알았습니다. 이것과 관련이 있습니까? 그렇다면 프로덕션 앱에서이 플래그를 false로 설정하는 것이 안전합니까? 사용자에게 영향을 미칠까요?
— Eliahu Horwitz

프로덕션에서 false를 설정하지 않는 것이 좋습니다. 사용자는 업데이트 중에 모든 기본 설정을 잃을 것입니다 .. 필요한 경우 데이터를 마이그레이션하는 것이 더 좋습니다 .. 디버그 코드에서 기본 설정이 여러 번 변경 될 수 있으며 백업을 끄는 것이 더 나은 곳
— Maher Abuthraa

1
Kudos @MaherAbuthraa .. 앱 제거 및 재설치 후에도 특정 공유 환경 설정 데이터가 유지되는 문제에 직면했습니다. 그런 일이 일어나고 있다는 것을 결코 알지 못했습니다.
— SoulRayder

1
정말 고마워! 당신은 내 생명을 구했습니다.
— hungtdo

업데이트 중에 기본 설정이 유지되지만 수동 제거시 제거되도록하려면 어떻게해야합니까? 확실히 이것은 예상되는 동작입니다.
— Gannet

10

이상하지만 다음과 같은 방법으로 해결책을 찾았습니다.

  1. 추가 xmlns:tools="http://schemas.android.com/tools"로 매니페스트 태그 의 Manifest.xml의 파일
  2. 추가 android:allowBackup="false"로 응용 프로그램 태그 의 Manifest.xml의 파일
  3. 추가 tools:replace="android:allowBackup"로 응용 프로그램 태그 의 Manifest.xml의 파일

Manifest.xml 파일은 다음과 같아야합니다.

    <?xml version="1.0" encoding="utf-8"?><!--suppress ALL -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.package">

        // Other code

    <application
        android:name="com.package.Application"
        android:allowBackup="false"
        android:hardwareAccelerated="true"
        android:icon="@drawable/appicon"
        android:label="@string/application_name"
        android:largeHeap="true"
        android:theme="@style/AppTheme"
        tools:replace="android:allowBackup">

        <activity
            android:name="com.package.SplashActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/application_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        // Other code

    </application>

    </manifest>

끝났다.


2
귀하의 문제는 모듈 / AAR 중 하나에 android : allowBackup = "true".. 속성 tools : replace를 사용하여 다시 설정해야하는 이유입니다.
— Maher Abuthraa

내가 선호하는 것을 유지 android:allowBackup="false"하고 tools:replace="android:allowBackup"여전히 얻고 있지만 , 문제가 무엇인지 아십니까?
— Shylendra Madda

나도 같은 문제가 발생합니다. 이 코드를 추가 한 후 우선 순위를 지울 수 없음
— Pawan Soni

5

문제는 선호도가 아닙니다.

이 코드를 사용하여 수정하십시오 ..........

<application
    android:allowBackup="true"
    android:fullBackupContent="false"></application>

도움이되었습니다. 그런데 왜 allowbackup을 false로 설정하지 않습니까?
— Shakle

3

설정 allowBackup="false"하면 애플리케이션이 백업 및 복원에서 제외됩니다.

 android:allowBackup="false"

-1

공유 환경 설정은 마시멜로에서 더 이상 항상 삭제되지는 않습니다. 매니페스트에 다음 줄을 추가합니다. "android : allowBackup ="false ""

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.