How to specify what sharedPreferences to automatically backup? - android

Auto Backup for Apps automatically backs up a user's data from apps that target and run on Android 6.0 (API level 23) or later.
I've a specific SharedPreferences data that I want to automatically back-up, but not all SharedPreferences. Is that possible to do?
Problem: I save an information about user on how much times he has opened application. I'd love to save this number on cloud, because, alot of users nowadays go to Google Play Store and update an existing application following (Uninstall -> Install). Well, as for now, my allowBackup=false, which means, that whenever user uninstalls app, the crucial information about user and his application opening count is lost. If I set allowBackup=true then I keep saving unnesassary data. Is there a possibility to save on the cloud part of SharedPreferences (not everything)? Is there other alternatives?

Related

Cordova - Permanent storage even after uninstall

I am developing an app using cordova (currently only releasing on Android) and I am struggling with storage options.
I am currently using Local Storage which seems to work well, however all data/values are wiped if the user uninstalls and reinstalls the app. I was wondering if there is a plugin or some way to permanently store data on Android even if the user uninstalls the app?
The reason I would like this is to allow the user to keep the coins they have earned/purchased if they were to remove the app and then get it back at a later date? I also have an 'ad free' IAP and I am currently storing a value in Local Storage when the user purchases this so don't want the ads to come back if they uninstall/reinstall.
If this is not possible is there an alternative way to recognise if the user has purchased the Ad Free IAP so they will always have no ads?
You could use cordova-plugin-cloud-settings to persist key/value data between installs / across same-platform devices.
You can save user data online. Check Firebase
Fetch the data from the server when needed.
Or you can also write it on a file and save it on local storage (not a good idea for most of the time)
This is terrible practice. You should always keep server side the amount of earned/purchased items then fetch them as you start the app. It wouldn't be too hard to download and rebuild your app in debug mode then change the local storage.

how to determine if an application was installed & started already

I want my application to know if it was installed & started already on the device. Currently, I store a unique user ID key in the shared preferences on the device. Restarting the application loads the user ID from the shared pref and hence, the application knows it was started previously. But after an uninstall and re-install, that shared preferences are gone byebye. Im aware I could write some file in external/internal storage of the device and those will not be removed on uninstall. But is there a more common technique to achieve my requirements? Other applications may read the contact's phone number use it server-sided to determine it, but I dont want to add such personal permissions to my app.

How to Manage Offline Trial Expiration for an Android Application?

I have developed an application that I want to share with my clients. I want to share its trial, taking care of following points
Application should expire (i.e. User cannot move from main activity) after 30 Days
Internet connection is not required for my application so I don't want to manage trial expiration by managing a server where device's IMEI can be stored or sort of thing.
I want to restrict user from using application even if he uninstall and later on re-Install my app.
I want to protect application trial against a manual date changing hack normally applied by users
I was planning to maintain a file for my application with time token of first run saved in it which can be compared with GPS time on each run but the issue I am facing here is of file storage. If I save a file in Internal memory it gets deleted with application un-install and cannot be used when user reinstalls the app and if I store it on SD card/ External memory it is vulnerable to user deletion. I have investigated this issue from everywhere I can but got no success. Any idea or suggestion by you guys would be a relief. :-)
There will have internet access when the app is installed, or they wouldn't be able to install it.
Simply require that the user activate the app with a server the first time they use it. The app gets a "this app was first activated on yyyy-mm-dd" response from the server, and stores that info on a file in internal storage. From that point on, the user won't need to be on-line to use the app.

Storing Settings in Android After App Uninstall

I am developing an Android app. This app stores preferences (user settings) relative to its functioning, such as preferred image quality, etc. etc.. And purchases too.
My question is: How to store these settings in Android in a way that they remain persistent even if the application is removed.
Specifically purchases. I want the user to be able to purchase an in-app feature, uninstall the app, and if he reinstalls the app and presses a "Restore Purchases" button, the previously purchased feature will be restored.
I am currently using Android's SharedPreferences to store these settings. I would like some comment on if this will work for my purpose or not.
If you use shared preferences, it will not work. We can't store data permanently using the shared preferences. The best way is using a web service as a backend.
The short answer for your specific case is to use the "managed by user account" purchase type when you set up in-app billing.
Regarding the general case, your app's SharedPreferences are deleted when your app is uninstalled, so no, this will not work. The only data that is kept around after uninstallation is that stored in a public directory in external storage (usually but not always an SD card). Your app's private directory on external storage is deleted, along with your databases, SharedPreferences, etc. during uninstallation.
It would be in poor form (and not very reliable) to use a public area of external storage to try to save user data for this purpose. The correct solution to the general problem of storing user data across devices or uninstall/reinstall cycles is, as #anoop suggested, to send it to a server.

Android: saving info for trial application

I want to save some info regarding a trial version an application.
I want this info to be persistent in order to detect if the user removed the application and installed it again after the trial expiry.
what is the best place to store such info
thanks
Most of the times the solution to this problem is to keep an server side check,
But if you dont want to involve a server its better to give some limited functionality in your trail app and full in the paid version.
There are other methods too like Time Trial but again they all depends on persistent data so they also fails if the user uninstalls and installs again your applucation
Store it in external file.
it wont be deleted after user uninstalled the app.
but
Serverside check by Device ID is the good way ..
I'm working on the same "problem" at the moment (offline solution for trial time expired apps):
My findings: There is no way to ensure that a user never can reinstall & reuse a (time) trial app but there is a way to 'nearly' prevent it:
Use shared preferences / a database / file saved on internal storage containing the install timestamp.
If the device has an external storage card (most devices have) also save the timestamp on the sd card.
The only possiblity to use your application also after expiring is if the user 1. clears app data on the phone and 2. finds the timestamp file on the sd card and also kills this one.
If he "just kills" the first or second check the killed one can be restored on next app start.

Categories

Resources