开发者

Can code be called when my Android application is uninstalled?

开发者 https://www.devze.com 2023-02-13 22:17 出处:网络
Does anyone know if a specific method is available to be overridden when my application is uninstalled? It would 开发者_如何学Gobe nice to remove these users from the server side database when this oc

Does anyone know if a specific method is available to be overridden when my application is uninstalled? It would 开发者_如何学Gobe nice to remove these users from the server side database when this occurs.


Unfortunately there is currently no way for an Android package to execute code when it is removed. However, you can register a BroadcastReceiver for ACTION_PACKAGE_REMOVED in a different package that will be called when packages are removed from the phone.

Also see this question.


I know I'm late to the party, but I'm guessing that since for you uninstalling the app is sufficient to blow away the user at the server (as opposed to the user explicitly picking a "delete my account" option), I would create a job on the server/service-side that scans for inactive users every N units of time (eg. 30 days) and deletes them. Why? An app that never connects to your server is as good as an app that is uninstalled.

However, you can then build logic in your app to handle the case when those users that never uninstalled the app, but don't log in for over N units of time, eventually come back. Then, you could:

  1. make the app send a special "I'm already installed" cookie to the server, which then instructs the app to send it enough app-side cached info to reconstruct the user data at the server while saying "Please wait, syncing with server...". This should work as long as the user data is not huge (for eg. some sort of image library), and if it is, your best bet then is to indicate in BOLD letters that inactive accounts will be deleted.
  2. Or, of course, you could also just reset the app to its original state and hope the user does not hate you.

You could go the route to install a service as part of your app that wakes up once a day and when WiFi is available and the device is on A/C power, sends a "heartbeat" to your service saying "I'm installed". If the heartbeat stops for more than a few days, you can assume the user uninstalled the app and delete the user data. But note that this is not foolproof, since the user may simply have turned the device off for that many days. In which case, you now have to handle the situation when a heartbeat comes in for a user that is no longer active in the system, at which point you will need to build in reconstruction logic as before (which buys you nothing for having gone through this pain of building the heartbeat, thanks a lot), or, you simply reset the app to its fresh state and hope the user doesn't hate you (which again buys you nothing for having gone through this pain of building the heartbeat, thanks a lot).

Those pesky users! ;-)


Yes, there is a way where you can Use Android listener application to install and uninstall App.

App install and uninstall will send a broadcast when the application installation is complete, the system will listen android.intent.action.PACKAGE_ADDED broadcast. The name of the package that was installed by intent.getDataString(). When the uninstall program system listens android.intent.action.PACKAGE_REMOVED the radio. The same intent.getDataString() to get the the uninstall package name. The application can not monitor the installation and uninstallation, but cover the installation can listen to their own android.intent.action.PACKAGE_REMOVED broadcast.

Example

AndroidManifest.xml configuration file:

<receiver android:name="com.sarbjot.MyApp.BootReceiver" >
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <action android:name="android.intent.action.PACKAGE_REMOVED" />
        <data android:scheme="package"/>
    </intent-filter>
 </receiver>

And the receiver call:

package com.sarbjot.MyApp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // install call
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
            //code here on install
            Log.i("Installed:", intent.getDataString());
        }

        // uninstall call
        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
            //code here on uninstall
            Log.i("Uninstalled:", intent.getDataString());

        }
    }
}

I hope it will help you all.


Yes, You can handle it by identifying click on Uninstall Button from Settings -> Manage Apps -> Selects a particular application.

try this answer.

Hopefully this will works.

0

精彩评论

暂无评论...
验证码 换一张
取 消