余米的Android应用程序的工作。我存储一些用户信息在共享首选项。 我希望用户不应该能够从设置中清除应用程序的数据。可以吗?Android的清除数据的应用程序
清单中有一个许可CLEAR_APP_USER_DATA我可以使用它吗?
余米的Android应用程序的工作。我存储一些用户信息在共享首选项。 我希望用户不应该能够从设置中清除应用程序的数据。可以吗?Android的清除数据的应用程序
清单中有一个许可CLEAR_APP_USER_DATA我可以使用它吗?
我想用户应该能够从设置清除应用程序的数据。有可能吗?
对不起,先生。用户可以做任何他们想做的自己的手机,包括清除所有的数据,卸载应用程序等
我还没有尝试过,我知道这是一个老问题,但你可以在谷歌应用程序备份数据服务器(教程在这里:http://developer.android.com/guide/topics/data/backup.html)。
然后在技术上,用户仍然可以清除数据,但你可以使用报警监控。
所以,每当用户存在于您的应用程序,你可以使用上面的教程,并坚持一个值sharedPreferences说,数据备份如下启动服务来备份用户的数据:
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences();//or name your own shared pref file
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("dataIsBackedUp", true);
然后做出正确的报警,以30秒或1分钟火左右,将广播发送到广播接收器类,以检查dataIsBackedUp的值,然后如果dataIsBackedUp返回false恢复数据。
要设置报警:(你会做这样的应用程序本身和在广播接收机)
Intent checkData = new Intent("MY_CUSTOM_INTENT_FILTER_NAME");
PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(),
0, checkData, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmMan = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, 1);
alarmMan.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
的BraodcastReceiver检查数据:
public class smsReceived extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent){
SharedPreferences pref = PreferenceManager.getDefault();//or your own named shared prefs file
if (pref.get("dataIsBackedUp", false)){
Intent restoreData = new Intent(context, backupAgent.class);
restoreData.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(restoreData);
}
}
}
而在你的清单:
<receiver android:name=".CheckData">
<intent-filter>
<action android:name="MY_CUSTOM_INTENT_FILTER_NAME"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
在那里,您指定BOOT_COMPLETED,以便您也可以检查启动,然后明星t再次设置警报以检查每一分钟,因为警报通过电源周期不会持续
@Dongshengcn如果您还有其他信息需要添加,请在评论或其他答案中注释 – 2011-02-14 15:39:35