在不使用 android:allowBackup="false" 的情况下卸载应用程序后删除共享首选项

Delete shared preferences after app uninstall without using android:allowBackup="false"

我想在卸载应用程序后删除共享首选项。而且我不想使用 android:allowBackup="false" 选项,因为我读到不建议将其用于生产中的应用程序。有没有其他方法可以在卸载后删除应用程序的共享首选项,同时仍保留备份(升级期间)

可以使用BroadcastReceiver

将此添加到 Manifest

<receiver android:name=".DeleteReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REMOVED" />
        <data android:scheme="package"/>
    </intent-filter>
</receiver>

BroadcastReceiverclass

public class DeleteReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //remove preferences
        SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
        settings.edit().clear().commit();
    }
}

更新: 经过一些研究,我发现你 cannot receive something when your app is deleted

The package that is being removed does not receive this Intent.

唯一的解决办法是使用第二个应用程序来获取它。抱歉让您失望了。

所以在你的情况下 android:allowBackup=“false”唯一 删除设置的方法。