如何从安装我的应用程序prevent植根Android手机? [英] How to prevent Rooted Android Phones from Installing my app?

查看:242
本文介绍了如何从安装我的应用程序prevent植根Android手机?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这方面的目的,在排行榜被报道是prevent假高分(我的应用程序是一个游戏)。这发生了飞扬的鸟 - 看到这个链接 - 的http://www.androidpit.com/forum/589832/flappy-bird-high-score-cheat-set-your-own-high-score

The purpose in this context is to prevent false high scores(my app is a game) from being reported in LeaderBoard. This occurred for Flappy Birds - see this link - http://www.androidpit.com/forum/589832/flappy-bird-high-score-cheat-set-your-own-high-score

由于root用户可以做任何他想用他的手机,我想没有任何其他工作的周围将工作和唯一的解决办法是prevent植根用户安装的应用程序。我对吗?有没有办法做到这一点?

Since a root user can do anything he wants with his mobile, I suppose none of the other work around will work and the only solution is to prevent rooted users from installing the app. Am I right? Is there a way to do it?

PS:我的游戏不需要互联网连接始终,因此报告成绩作为和当它发生到另一台服务器是不可行的。高分报道,只有当Internet连接可用到排行榜。

PS: My game doesn't need internet connection always, hence reporting the scores as and when it happens to another server is not viable. The high scores are reported to leaderboard only when internet connection is available.

推荐答案

我也有类似的要求。我不能做到这一点的应用程序不应安装根设备的,但我用一个变通为:

I had a similar requirement. I couldn't achieve that app should not be installed on rooted device, but I used a work around for that:


  • 检查设备是否植根于您的活动的 onResume

  • 如果它植根,只是告诉他提醒该设备是植根,你不能使用这个程序。,并从应用程序退出。

示例:

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    if(new DeviceUtils().isDeviceRooted(getApplicationContext())){
        showAlertDialogAndExitApp("This device is rooted. You can't use this app.");
    }
}


public void showAlertDialogAndExitApp(String message) {

    AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
    alertDialog.setTitle("Alert");
    alertDialog.setMessage(message);
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                    finish();
                }
            });

    alertDialog.show();
}

DeviceUtis.java 是如果一个设备是植根与否而返回的实用工具类。

DeviceUtis.java was a Utility class which returned if a device is rooted or not.

public class DeviceUtils {

    public Boolean isDeviceRooted(Context context){
        boolean isRooted = isrooted1() || isrooted2();
        return isRooted;
    }

    private boolean isrooted1() {

        File file = new File("/system/app/Superuser.apk");
        if (file.exists()) {
            return true;
        }
        return false;
    }

    // try executing commands
    private boolean isrooted2() {
        return canExecuteCommand("/system/xbin/which su")
                || canExecuteCommand("/system/bin/which su")
                || canExecuteCommand("which su");
    }
}

我们曾用5种方法进行测试,和我刚才2所示这里。您可以使用任何方法你觉得不错的。

We had used 5 methods for testing, and I have just shown 2 here. You can use any of methods you find good.

希望这有助于。

PS:我已经把这个调用的所有活动的 onResume 登录(与黑客的意图),可以安装应用程序,浏览到一些其他的活动,然后根设备。

P.S: I have put this call in all activity's onResume as user (with intention of hacking) can install application, navigate to some other activity, and then root device.

这篇关于如何从安装我的应用程序prevent植根Android手机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆