cách xóa tùy chọn chia sẻ trong khi gỡ cài đặt ứng dụng trong android


103

Tôi có một ứng dụng Android để lưu các chi tiết đăng nhập như tên người dùng và mật khẩu thông qua ứng SharedPreferencesdụng đó hoạt động tốt, nhưng tôi cần xóa tất cả những gì đã sử dụng SharedPreferencestrong khi gỡ cài đặt ứng dụng của mình. Làm thế nào để làm nó?

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", "");   
   } 

Tôi muốn xóa điều này SharedPreferenceskhi gỡ cài đặt ứng dụng của tôi.


11
Điều này sẽ tự động bị xóa bởi Hệ điều hành Android khi gỡ cài đặt ứng dụng ...
umair.ali

cảm ơn vì chi tiết đáng giá
shivcena

Không có trên Samsung Galaxy 1 (Froyo) đã root của tôi. Vẫn ở lại /dbdata/database/my.package/shared_prefs. Không biết đây là do nó đã bị root hay do Froyo. Đã không thể để thử nghiệm với các thiết bị mới hơn
Nilzor

Câu trả lời:


19

SharedPreferences luôn bị xóa cùng với việc gỡ cài đặt ứng dụng.

Khi bạn gỡ cài đặt bất kỳ ứng dụng nào, tất cả các thay đổi mà ứng dụng đã thực hiện trong bộ nhớ trong của bạn sẽ bị thu hồi, điều đó có nghĩa là các tệp SharedPreference, Tệp dữ liệu khác, Tệp cơ sở dữ liệu, Ứng dụng sẽ bị Hệ điều hành Android tự động xóa.

CHỈNH SỬA: 29/04/15: for> = 21 API tham khảo câu trả lời của @Maher Abuthraa


10
Không phải trường hợp trên Nexus 6P, hãy tìm hiểu điều này ngay bây giờ.
AndyRoid

1
Có, tôi cũng quan sát thấy trong Nexus 5 chạy với Android 6 không xóa các tùy chọn được chia sẻ. Tôi đã phải khởi động lại thiết bị sau khi gỡ bỏ cài đặt và sharedpreferences đã biến mất tại
Santhana

2
Galaxy s7 ở đây với cùng một vấn đề. Tôi Gỡ cài đặt và sau khi cài đặt, các tùy chọn được chia sẻ vẫn được đặt. Thực sự khó chịu vì tôi không thể kiểm tra cài đặt mới bằng cách gỡ cài đặt nó.
Dpedrinha

2
@Maher Abuthraa có một câu trả lời đúng câu trả lời này là sai.
Юрій Мазуревич

1
Máy samsung s8 s8 + cũng không xóa được ưu đãi chia sẻ, mình mới test. Thực sự thất vọng với Samsung
Vrajesh

298

Vấn đề không phải là sở thích. Đó là người quản lý sao lưu quyết liệt ! .. kể từ android-23 theo mặc định sao lưu dưới dạng tác vụ lưu trữ dữ liệu của ứng dụng bao gồm cả các tùy chọn lên đám mây. Sau đó, khi bạn gỡ cài đặt rồi cài đặt phiên bản mới hơn, bạn có thể sẽ sử dụng các tùy chọn đã khôi phục. Để tránh điều đó, chỉ cần thêm cái này vào tệp kê khai của bạn (hoặc ít nhất là để gỡ lỗi tệp kê khai):

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

Đọc phần này: http://developer.android.com/guide/topics/data/backup.html

Bạn cũng sẽ thấy điều đó nếu chạy Lint theo Android > Lint > Security:

cảnh báo xơ vải khi sao lưu

Thật tốt khi đề cập ở đây rằng quá trình sao lưu giống như một hộp đen .. bạn không biết khi nào nó bắt đầu, và khoảng thời gian giữa các lần kiểm tra ... vì vậy tốt hơn là nên phát triển để vô hiệu hóa nó.

==== Cập nhật ====

Bạn có thể gặp sự cố sáp nhập Tệp kê khai sau khi đặt allowbackupthành false. Để khắc phục sự cố đó, hãy thêm:

tools:replace="android:allowBackup"

trong phần tử ứng dụng. Ghi có cho @ shahzain-ali

Ngoài ra, bạn có thể xóa bộ nhớ cache trước khi gỡ cài đặt ứng dụng.

Tôi hy vọng điều đó có thể giúp ích.


4
Này, tôi nhận thấy rằng trong một số thiết bị, các tùy chọn chia sẻ được giữ lại sau khi khởi động lại thiết bị sử dụng unistall. Có liên quan đến điều này không? Nếu vậy, có an toàn để đặt cờ này thành false trên ứng dụng sản xuất không? Nó sẽ ảnh hưởng đến người dùng?
Eliahu Horwitz

Bạn không nên đặt false khi sản xuất .. người dùng sẽ mất tất cả các tùy chọn trong khi cập nhật .. Tốt hơn trên sản xuất để di chuyển dữ liệu nếu cần .. trong mã gỡ lỗi và tùy chọn có thể thay đổi nhiều lần, nơi tốt hơn là tắt sao lưu
Maher Abuthraa

1
Kudos @MaherAbuthraa .. Tôi đã gặp phải vấn đề này do một số dữ liệu sở thích chia sẻ nhất định được giữ lại sau khi gỡ cài đặt và cài đặt lại ứng dụng. Không bao giờ biết rằng một điều như vậy đã được thực hiện.
SoulRayder

1
Cám ơn rất nhiều! bạn đã cứu cuộc đời tôi.
hungtdo

Làm cách nào để đảm bảo các tùy chọn được giữ nguyên trong quá trình cập nhật nhưng bị xóa khi gỡ cài đặt thủ công? Chắc chắn đây sẽ là hành vi được mong đợi.
Gannet

10

Thật kỳ lạ nhưng tôi đã tìm thấy giải pháp theo cách sau:

  1. Thêm xmlns:tools="http://schemas.android.com/tools"vào thẻ kê khai của tệp Manifest.xml
  2. Thêm android:allowBackup="false"vào thẻ ứng dụng của tệp Manifest.xml
  3. Thêm tools:replace="android:allowBackup"vào thẻ ứng dụng của tệp Manifest.xml

Tệp Manifest.xml sẽ trông như thế này.

    <?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>

Xong rôi.


2
Vấn đề của bạn là một trong các mô-đun / AAR của bạn có android: allowBackup = "true" .. Đó là lý do tại sao bạn cần thiết lập lại nó bằng các công cụ thuộc tính: Replace.
Maher Abuthraa

Mặc dù tôi đã giữ android:allowBackup="false"tools:replace="android:allowBackup"vẫn nhận được các tùy chọn của mình, Bạn có biết vấn đề gì không?
Shylendra Madda

Tôi cũng đang nhận được cùng một vấn đề. Sau khi thêm mã này không thể xóa ngoại lệ
Pawan Soni

5

Vấn đề không phải là sở thích.

sử dụng mã này để sửa nó ..........

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

Điều đó đã giúp. Nhân tiện, tại sao chúng ta không đặt allowbackup thành false?
Shakle

3

Cài đặt allowBackup="false"chọn ứng dụng không tham gia cả sao lưu và khôi phục.

 android:allowBackup="false"

-1

Tùy chọn Chia sẻ không phải lúc nào cũng bị xóa nữa kể từ marshmallow. Thêm dòng này vào tệp kê khai của bạn: "android: allowBackup =" false ""

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.