在不使用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”只有的方式来删除设置。

+0

我试过这个,但它不适用于我。我把接收器类保存在所有活动之外是正确的吗? – Bharath

+0

@Bharath是的,它应该在它自己的文件中分离。你有没有检查你的设备是否阻止接收器? – DEADMC

+0

@ DeadMC-我认为我的设备不会阻止接收器。有什么方法可以检查吗?我是Android开发新手。所以,如果你能给我指针,这将是非常有帮助 – Bharath