餘米的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