生成特定于设备的序列号

Aym*_*ier 12 android licensing license-key

我希望能够为每个Android设备生成唯一的序列号,以用于解锁应用程序.我怎么能这样做?

编辑:

原因是我想要修改付费应用程序,并为已支付旧版本的用户提供不同的软件包名称,通过下载可解锁的应用程序免费版本来获取完整版本.我会将更新推送到旧版本,该版本将生成并显示他们可以输入的代码,以将免费版本转换为功能完整的版本.

Jan*_*usz 8

您可以使用Android ID.此ID应该是设备唯一的,但它的设置方式取决于设备制造商的实现.

String deviceId = Secure.getString(context.getContentResolver(),Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)

Android Id可能会在手机重置后更改,用户也可以在root手机上更改它.但是如果你需要一个id来识别你的用户,它应该没问题.

  • 不幸的是,过去有制造商将ANDROID_ID设置为null,或者更糟糕的是,所有设备都是相同的!请参阅[此主题](http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id). (2认同)

Mat*_*yr' 8

为什么不使用谷歌帐户名?很容易获得,只需要清单文件上的简单请求.他们将用gplay购买许可证,所以g +帐户名称应该足够......

在清单中:

<manifest ... >
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    ...
</manifest>
Run Code Online (Sandbox Code Playgroud)

检索帐户名称:

AccountManager am = AccountManager.get(this); // "this" references the current Context

Account[] accounts = am.getAccountsByType("com.google");
Run Code Online (Sandbox Code Playgroud)

检索名称:

accounts[0].name
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的提醒,以确保我在这里找到了一个帐户:

Account[] accounts = am.getAccountsByType("com.google");
    AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

    miaAlert.setTitle("i found an account name!");
    miaAlert.setMessage(accounts[0].name);
    AlertDialog alert = miaAlert.create();
    alert.show();
Run Code Online (Sandbox Code Playgroud)