限制应用程序仅在特定的imei安卓设备上安装

时间:2014-08-18 06:08:52

标签: android android-manifest unique imei

我为特定的人开发了一个教育应用程序。我希望我的应用程序只安装在他们的设备上(在特定的IMEI设备上)。

我知道,安装完应用程序后,我的应用程序可以验证这些IMEI号码。但是众所周知,我们可以在清单文件中加入一些限制(如Minimum SDK版本)。我想知道,我们可以在清单文件中添加任何设备ID限制,在安装时进行验证。

如果是,那么我为所有这些生成不同的apk文件......

4 个答案:

答案 0 :(得分:1)

从android中我无法理解你不能通过任何权限限制但是通过智能编码可以实现它

1)无论如何,您将以编程方式获取用户手机的IMEI号码,您可以检查登陆/启动页面上的状况 IMEI == USER_IMEI_NUMBER然后只有他/她才能看到其主页,否则他将无权进入主页面,但为此您需要为每个设备创建APK文件

2)如果您不知道有多少用户会使用您的应用,那么您可以在该数据库中执行远程数据库,您可以保存新用户的IMEI号码,在启动/登录页面中您可以通过webservice查看即IMEI == USERS_IMEI_NUMBER(来自远程数据库)然后他/她可以使用您的应用程序,但当然您需要提及其中的互联网权限,用户必须拥有有效的互联网连接 如果您不希望用户每次都检查身份/ IMEI号,那么您可以立即验证用户,并且可以将其结果保存在共享的偏好中,并且您可以每次都访问用户而无需通过Web服务进行验证

希望这个建议可以帮助你快乐编码:)

答案 1 :(得分:0)

我认为Google Play商店无法过滤特定IMEI设备的应用。如果我这样做,我会设置自己的服务器并将apk上传到那里然后将网址分发给我想与之共享应用程序的设备。看看这里

答案 2 :(得分:0)

我使用 TelephonyManager 和 IMEI 号码来识别真实用户。当有人想要该应用程序时,他们会发送 IMEI,然后我将其放入并重建项目,并将 APK 文件签名到他的号码。生成签名的 Apk 后,我将通过 Whatsapp 发送它。 有些正在安装和运行,有些只是安装。请你能说出它的错误是什么。谢谢 下面显示了我的主要活动 .java

    public class MainActivity<AUTHORISED> extends AppCompatActivity {

private final static String AUTHORIZED_IMEI = "xxxxxxxxxxxxxxx";
TextView txtView, txv;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

        // TODO: Consider calling
        // ActivityCompat#requestPermissions;
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
        } else {
            return;
        }
    }
    String deviceImei = telephonyManager.getDeviceId();

    String authorisedImei = "356245995115572154" + "";
    if (authorisedImei.equals(deviceImei)) {
        txtView= findViewById(R.id.text2);
        txtView.setText(deviceImei + " - Authorised");
        startActivity(new Intent(MainActivity.this, AreatoRiyanActivity.class));
    }
    else {
        txtView = findViewById(R.id.text2);
        txtView.setText(deviceImei + " - Not authorised");

        new CountDownTimer(5000, 1000) {
            public void onTick(long millisUntilFinished) {
                 txv = findViewById(R.id.text1);
                txv.setText("seconds remaining: " + millisUntilFinished / 500);
            }
            public void onFinish() {
                finish();
            }
        }.start();
    }
}

}

答案 3 :(得分:-1)

如果您知道如何以程序化的方式获取IMEI号码,请分享代码。 您要求的答案是== 步骤1.在程序化的同时找到IMEI号 第2步。将该号码存储在您的应用中 第3步。将该号码传递给您的app verifyer进行安装

相关问题