gpt4 book ai didi

android - 专业 key 的许可证检查

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:31 25 4
gpt4 key购买 nike

所以我想制作一个加载了全部功能的免费应用程序。在应用程序检测到许可的专业版 key 之前,专业版功能将被禁用。当然,我想让专业 key 使用 LVL 检查它的许可证。虽然到目前为止我知道如何做正确的事情,但我不知道如何让专业 key 与应用程序通信,它应该启用专业功能。

这是主要的应用程序代码 (com.test.mainapp):

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

context = getApplicationContext();

final PackageManager pacman = getPackageManager();
final int signatureMatch = pacman.checkSignatures(getPackageName(),
"com.test.mainapp_key");

if (signatureMatch == PackageManager.SIGNATURE_MATCH) {
Toast.makeText(context, "Pro key detected!", Toast.LENGTH_SHORT)
.show();
} else {
Toast.makeText(context, "Free version", Toast.LENGTH_SHORT).show();
}
}

虽然这会阻止其他人为我的应用程序制作假 key ,但他们仍然可以在线与其他人共享 key 应用程序并且它会起作用。因为我们不能从另一个应用程序进行 LVL 检查,所以我希望许可证 key 应用程序检查它自己的许可证,如果它是正确的,只有这样用户才能获得专业功能。我怎样才能让许可证 key 应用程序和主应用程序像这样相互通信?

例如,我在这里尝试实现的功能类似于 Titanium Backup。

最佳答案

您可以在主应用和关键应用之间发送 Intent 。如果您在关键应用程序中使用 LVL,那么示例回调将是:

private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
public void allow() {
Log.i("Key", "License Accepted");
Intent i = new Intent();
i.setAction("intent.to.call.on.success");
i.putExtra("licenseresult", 0);
c.sendBroadcast(i);
mChecker.onDestroy();
}

public void dontAllow() {
Log.e("Key", "License Denied");
Intent i = new Intent();
i.setAction("intent.to.call.on.failure");
i.putExtra("licenseresult", 1);
c.sendBroadcast(i);
mChecker.onDestroy();
}

public void applicationError(ApplicationErrorCode errorCode) {
Log.i("Key", "LR Error");
Intent i = new Intent();
i.setAction("intent.to.call.on.error");
i.putExtra("licenseresult", 2);
c.sendBroadcast(i);
mChecker.onDestroy();
}
}

您将在两个应用程序中设置广播接收器以启动许可检查并处理结果。例如

public class License extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals("intent.called.to.initiate.request")) {
// Initiate the license request here (possibly using a service)
return;
}
}

}

您应该使用基于证书的权限来限制对 Intent 的访问,以防止其他应用能够发送欺骗性的“许可成功” Intent 。

http://developer.android.com/reference/android/content/BroadcastReceiver.html#Permissions

简短版。

在 list 中定义权限

< permission android:name="my.package.LicenseCheck" android:protectionLevel="signature"/> 

在接收者声明中使用权限:

<receiver android:name="name.of.your.receiver" android:permission="my.package.LicenseCheck"> 
<intent-filter>
<action android:name="name.of.intent"/>
</intent-filter>
</receiver>

关于android - 专业 key 的许可证检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com