Android App:如何阻止用户重新安装以前安装过的应用程序,然后再卸载?

时间:2011-12-08 06:14:36

标签: android

从根本上说,我想跟踪用户的设备说一些独特的设备ID,然后在用户安装我的应用程序时存储在服务器上!如果它在卸载后再次尝试安装我的应用程序,那么应用程序不应该安装。 我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:0)

我认为您无法阻止用户重新安装,但是在您的应用程序中,您设置了一个功能,可以检查数据库中是否存在以前安装过的设备ID,如果您找到了,则会禁用您的功能应用

答案 1 :(得分:0)

您无法自行卸载应用程序(否则您会看到病毒从一开始就擦除我们的手机)但如果在数据库中找到该设备,您仍然可以禁用该应用程序。

  • 创建与服务器的连接
  • 询问设备是否已获得授权
  • 如果您未获得授权,请关闭该应用<​​/ li>

答案 2 :(得分:0)

//使用以下代码查找是否安装了应用程序 //您的应用包名称是唯一ID

// appUniqueIdStr - 应用程序的包名称

boolean installed  = appInstalledOrNot(appUniqueIdStr);
if(installed){
//dont install
}
else{
//install 
}


     /**
     * check app installed or not
     * @param uri is the package name of the app
     * @return boolean whether installed or not
     */
    private boolean appInstalledOrNot(String uri)
    {
        boolean app_installed = false;

        ListofAppinMyDevice getmyApp=new ListofAppinMyDevice();
        ArrayList<PInfo> apps  =getmyApp.getInstalledApps(false); /* false = no system packages */ 
        Log.e("hi", "apps==="+apps.toString());
        String uri_app=null;
        if(uri!=null)
        {
            uri_app=uri;
        }
        else 
        {
            uri_app=null;
        }

        for (int i = 0; i < apps.size(); i++)
        {

            Log.e("pack name", "apps.get(i).pname.==="+apps.get(i).pname.toString());

            if(apps.get(i).pname.toString().trim().equalsIgnoreCase(uri_app))
            {
                app_installed=true;
                Log.v("hi","im inside the loop");
                break;
            }   
        }

        Log.e("boo", "app_installed==="+app_installed);
        return app_installed ;
    }