Android应用程序卸载列表器

时间:2014-07-09 17:54:20

标签: android android-broadcast

我想制作一个应用程序,如果用户尝试卸载我的应用程序,我想要收到信号或其他任何内容 有没有办法做到这一点? 请帮忙

以下是我的演示应用程序的清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.uninstalldefence"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.uninstalldefence.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name="com.example.uninstalldefence.BootReceiver"
            android:label="Bilal" >
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />

                <data android:scheme="Package" />
            </intent-filter>
        </receiver>
    </application>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RESTART_PACKAGES" />

    <Uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

</manifest>

这是我的广播接收器。但它没有用 你能帮忙吗?     package com.example.uninstalldefence;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.widget.Toast;

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // Receive install the radio
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
            String packageName = intent.getDataString();
            System.out.println("installed:" + packageName
                    + "package name of the program");
            Toast.makeText(context.getApplicationContext(), "Added!",
                    Toast.LENGTH_LONG).show();

        }
        // Receive uninstall broadcast
        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
            String packageName = intent.getDataString();
            System.out.println("uninstall:" + packageName
                    + "package name of the program");
            Toast.makeText(context.getApplicationContext(), "Removed!",
                    Toast.LENGTH_LONG).show();


        }
    }
}

1 个答案:

答案 0 :(得分:1)

Is it possible to detect Android app uninstall?

这是一篇文章。我不知道您的确切应用程序,但您可以让用户每次启动应用程序时广播一个唯一的ID。通过这种方式,您可以收集到多少活跃的&#39;您拥有的用户,而不是人们如何安装您的应用。


1)在安装应用程序之前无法按照文档中的说明运行代码。

  

广播操作:已从设备中删除现有的应用程序包。数据包含包的名称。正在安装的软件包不会收到此Intent。   http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REMOVED