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다음에서 실행하면 알 수 있습니다 .

백업시 린트 경고

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

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

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

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.