Google helps you do this.
This page helps you set it up.
Insbesondere it looks like you want to add a DeviceLimiter:
In einigen Fällen können Sie Ihre Politik wollen die Zahl der tatsächlichen Geräte zu begrenzen, die eine Lizenz nutzen dürfen. Dies würde verhindern, dass ein Benutzer eine lizenzierte Anwendung auf eine Anzahl von Geräten verschiebt und die Anwendung auf diesen Geräten unter derselben Konto-ID verwendet. Es würde auch verhindern, dass ein Benutzer die -Anwendung "gemeinsam nutzt", indem er die mit der -Lizenz verknüpften Kontoinformationen anderen Personen zur Verfügung stellt, die sich dann auf ihren Geräten auf diesem Konto anmelden und auf die Lizenz für die Anwendung zugreifen können.
Die LVL unterstützt die Lizenzierung pro Gerät, indem sie eine DeviceLimiter Schnittstelle bereitstellt, die eine einzige Methode, allowDeviceAccess(), deklariert. Wenn ein LicenseValidator eine Antwort vom Lizenzierungsserver verarbeitet, ruft er auf allowDeviceAccess() auf und übergibt eine Benutzer-ID-Zeichenfolge, die aus der -Antwort extrahiert wurde.
Wenn Sie die Geräteeinschränkung nicht unterstützen möchten, ist keine Arbeit erforderlich - Die LicenseChecker-Klasse verwendet automatisch eine Standardimplementierung namens NullDeviceLimiter. Wie der Name andeutet, ist NullDeviceLimiter eine "no-op" -Klasse , deren allowDeviceAccess() -Methode einfach eine LICENSED-Antwort für alle Benutzer und Geräte zurückgibt.
Achtung: Pro-Gerät Lizenzierung für die meisten Anwendungen empfohlen nicht, weil:
Es erfordert, dass Sie einen Back-End-Server bieten einen Benutzer und Geräte-Mapping zu verwalten, und es könnte in einem Benutzer seine versehentlich führen Zugriff auf eine Anwendung verweigert, die sie berechtigt erworben haben auf einem anderen Gerät.
Der Quellcode für DeviceLimiter
can be found here.
Die Quelle ziemlich erklärt, wie Sie über die Verwendung DeviceLimiter gehen würden, zu implementieren, was Sie wollen:
/* The LICENSED response from the server contains a user identifier unique to
* the <application, user> pair. The developer can send this identifier
* to their own server along with some device identifier (a random number
* generated and stored once per application installation,
* {@link android.telephony.TelephonyManager#getDeviceId getDeviceId},
* {@link android.provider.Settings.Secure#ANDROID_ID ANDROID_ID}, etc).
*
* The more sources used to identify the device, the harder it will be for an
* attacker to spoof.
Die meisten Benutzer würden wahrscheinlich erwarten, dass die App auf allen ihren Geräten funktioniert. Wenn Sie einen Grund wie MyBackup Pro haben (z. B. jedes Gerät fügt Speicher- und Übertragungskosten hinzu), dann denke ich, solange Sie es klar machen, bevor ein Benutzer kauft, ist es in Ordnung. Wenn Sie keinen Grund haben, solche Geräte einzuschränken, würde ich sagen, tun Sie es nicht, um die Benutzerfreundlichkeit nicht zu beeinträchtigen. – Alec