在不使用android的情况下删除应用程序卸载后的共享偏好设置:allowBackup =“false”
问题描述:
我想在卸载应用程序后删除sharedpreferences。我不想使用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>
后删除一个应用程序共享偏好
而BroadcastReceiver
类
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。
被删除的软件包未收到此Intent。
唯一的解决方案是使用第二个应用程序来获取它。对不起,令人失望。
所以在你的情况下android:allowBackup=“false”
是只有的方式来删除设置。
我试过这个,但它不适用于我。我把接收器类保存在所有活动之外是正确的吗? – Bharath
@Bharath是的,它应该在它自己的文件中分离。你有没有检查你的设备是否阻止接收器? – DEADMC
@ DeadMC-我认为我的设备不会阻止接收器。有什么方法可以检查吗?我是Android开发新手。所以,如果你能给我指针,这将是非常有帮助 – Bharath