2014-07-09 64 views
0

我想做一個應用程序,其中如果用戶嘗試卸載我的應用程序 有什麼辦法可以做到這一點? 請幫助Android應用程序卸載列表程序

這裏是我的我的演示應用程序

<?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(); 


     } 
    } 
} 
+0

的可能重複[安卓:聽自己的應用程序卸載事件](http://stackoverflow.com/questions/19475765/androidlisten-to-own-application-uninstall-event) – Henry

回答

1

Is it possible to detect Android app uninstall?

這裏是一個職位。我不知道你確切的應用程序,但你可以讓用戶每次啓動應用程序時播放一個唯一的ID。通過這種方式,您可以收集您擁有多少「活躍」用戶,而不是人們安裝應用的方式。


1)按照文檔中的說明安裝應用程序之前,無法運行代碼。

廣播動作:現有應用程序包已從設備中刪除。數據包含軟件包的名稱。正在安裝的軟件包未收到此Intent。 http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REMOVED

+0

嘿,我已經加入我的代碼請檢查你是否幫助我? – user3765485

+0

您的代碼只能在其他應用程序正在卸載時檢測到。 因此,我建議的解決方案是跟蹤您在服務器端有多少「活動」用戶。 _您可以將活動定義爲:在上週內使用過您應用的用戶._ – toidiu