Stop my app from being updated(auto-update is disabled) - android

Consider that user has my app with version 1 and auto update option is disabled/off. I have an upgrade in the market for my app(say version 2).
User gets a notification saying, "updates available" and updates my app.
Now based on some requirement I need my app not be be upgraded to version 2.
Can this be done?

That's a very odd question...
It can't be done, since the application WILL be updated to the new one when the user UPDATES the application as this is the concept of updating the app...
You can, however, do these differentiations in the code, where if you don't want the new updated code to occur, just call the old one... Then you'll have 2 sets of logics inside your code and you will run the correct code based on your decision

Related

Smsgateway.me API - REST Mod disabled on V4

I've updated everything for their new API v4 and also the new Android application (the old one was removed from the Play Store).
Now I'm having a problem with the messages in application running android 5.0, I've to press "Check Server Now" everytime to check for new messages (which are sent to API correctly but gets the status Pending until I press in the app manually).
Someone tolds us to install the previous version of the .apk to solve this issue but I don't know how to get it.
Yes that is correct since May 12 I did need to update my php version it took a while but when I finally get it my phone did not need to download the app again now I see that play on my favor, I did use the app with no problems, I also saw that the sending process was not even aligned with the every minute I configure on my old samsung.
Today sadly 9/2/2018 my cell stop to work better said the app claimed for internet to be able to connect, of course I had WiFi and 4G but looks like something happened a 6 am pacific time.
I was expecting it was a problem with server so I wait patiently until 2 PM, and I asked my son to see the app on his phone Samsung J7 and the app was asking for user and password
I knew that the J7 was not able to configure the asking time to server looking for pending sms's but I thought will be enough for today sending messages every 5 minutes thinking was the default time. But did not work unless we click the manual form in the app or at least having the app on the screen swivel and will update sending sms's as mentioned leaving the status on pending and some times sent.
I did something stupid delete my old version of the app from my old samsung and guess what, I could not download the new version for incompatibility with my phone, I still not sure if my old version will start to work later on the day or tomorrow, but certainly I lost the opportunity to know.
I used https://apkpure.com/es/sms-gateway-api/networked.solutions.sms.gateway.api go get the older version an installed again on my SGH-M919V Samsung Android 4.4.2 not compatible anymore so the option of configure the refresh is not there any more, J7 was not able to do that,
Sep 3 2018 team upload new version since the notification process to send the sms did not work, the new version suppose to ask server every 2 min not working on my J7 Samsung. so at this point I have to send the messages clicking manually to search on the server for sms pending to send.

Detect application is being uninstalled in lollipop devices

I would like to know which users have uninstalled my application so that I can ask them for a feedback to improve the app. Hence, I would like to detect when the user has initiated the uninstallation process on my app.
One of the older solutions on StackOverflow had the following steps:
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(MAX_PRIORITY);
String activityName = taskInfo.get(0).topActivity.getClassName();
if (activityName.equals("com.android.packageinstaller.UninstallerActivity")) {
// do whatever is needed
Since Lollipop, getRunningTasks has been deprecated. So how can com.android.packageinstaller.UninstallerActivity activity be detected without getRunningTask?
Alternatively is there any other method to detect uninstallation process has been started on my app? Using getAppTask probably?
Apparently you wont be able to do this, you will have to rely on something called silent notification.
What we did was we sent notification every 3 days or whatever frequency you want.
On the client side as soon as a notification is received we hit a network call which mark NotificationReceived for the client. Now since notification are not full proof we assumed a threshold of 2/3 missed notification as uninstall event. And for the client we have this counter above decided threshold we contacted them for feedback.
Also no one will be willing to fill your form at the time of uninstallation as user has already decided to uninstall your application.
Read these 2 questions and answers:
native solution
GCM solution
As I know you have to mix the two. Read the limitations of first solution. You have to confirm uninstallation event of the first solution with the second solution for a complete implementation.
Hopefully, this solution will work for you. It helps you understand the reasons for your app uninstalls, reduce the uninstall rate using a powerful predictive engine and also get app Re-installs through a unique actionable channel (Android version 4.0 and above).
Just set a variable named appLastPresent for every user in the server-side and update that variable every day by calling an API using WorkManager's PeriodicWorkRequest. Also set installedDate variable when the user installs the app.
Now set up a chron job on the server side to check if the difference between installedDate and appLastPresent is greater than 7 days. Then send the user an email or message enquiring for issues or feedback, if it is greater.
NB: User can be offline for 7 days. Therefore only send email enquiring like why you are not using the app, if uninstalled please let us know why

How to know if the programmatically install/update of my app is successfull

I'm currently create an application that have the possibility to updated from own code thanks to a downloaded .apk from a server.
I would like to know if the update/Install of the app is successfull. Because currently the update working fine but i don't know if the installation/update is ok or not, if the installation face a problem or if the user cancel install or somethings else. So i need to have a callback "installFinish(boolean isOk)".
i search for a day but i don't find solution for my problem.
I read lot of things, particulary this :
How to find out when an installation is completed
or this :
Android - Install Application programmatically with result
but is not what i seach.
This is my code for update my app
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file.getAbsoluteFile()), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity) context).startActivity(intent);
EDIT
I tried this https://stackoverflow.com/questions/29175722/how-to-get-onactivityresult-called-from-action-view-intent
but it's not working for me for two reason i think:
I don't know whether the user pressed Cancel
onActivityResult is never call after updated the same app, maybe because it's the same app which updated the app who launch the intent is kill. ?
Maybe the last reason it's the same reason why i don't receive broadcastevent such as listening for ACTION_PACKAGE_ADDED in the app who launch the update.
Maybe i can call the method when the first time the application is launch, it's like install is successfully because the app is started.
Heres a work around which we use:
Implement a dummy provider and override onUpgrade().onUpgrade is called whenever database is upgraded.U will need maintain one to one mapping between database version and app version.

Why is ContentResolver.setIsSyncable not working for me?

I am writing an app which uses the SyncAdapter framework. By default, the user has to activate the sync in the android account settings.
However, I was told that by calling
ContentResolver.setIsSyncable (mAccount, AUTHORITY,1);
I can activate the syncing without any user interaction.
Sadly, this doesn't seem to work. Even after a complete reinstall of the app, the sync adapter service is not running and the account settings look like this:(See screenshot below.)
What could I possibly be missing? Is it a problem maybe that I am calling ContentResolver.setIsSyncable (mAccount, AUTHORITY,1); from the content provider as opposed to the activity?

How to check if certain intent has started

How to check if intent or app has started ?
My use case is I am showing up notifications through my app and I want to clear them all via myBuilder.cancelAll() if default messaging app has started since my app shows sms notifications. So I am kind of looking for something like:
if (smsAppStarted) {
myBuilder.cancelAll();
}
Thanks
To check if an app has started:
Get the package name of the sms app you want to check.
Then refer to my answer here:
Android how to know an app has been started and range apps priority according the starting times
By using that code, the list taskInfo will contain the list of all apps currently running. Search that list using the package name of the sms app. If it is present in that list, it means that that app has started and currently running.
If I get you right, you need to determine, if another app is currently running. If so, then use this solution.

Categories

Resources