- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我想制作一个加载了全部功能的免费应用程序。在应用程序检测到许可的专业版 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/
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我需要创建一个 API,允许我客户的开发人员使用将作为库发布的专有 C 模块(想想 .lib 或 .so - - 不是来源)。 我想让 header 尽可能对开发人员友好(所以我不需要这样做),遵循最
所以我想制作一个加载了全部功能的免费应用程序。在应用程序检测到许可的专业版 key 之前,专业版功能将被禁用。当然,我想让专业 key 使用 LVL 检查它的许可证。虽然到目前为止我知道如何做正确的事
我想就最小/样板专业 PHP 团队开发环境获得普遍共识。我无法在网络上的任何地方找到此信息。在开源世界中,有如此多的选择和如此多的做事方式,但我还没有找到任何适用于基础设施/管道方面的通用最佳实践。
希望我的问题不会太宽泛。因此,我尝试构建我的问题,以免对 this question 的问题得到太相似的答案。 . 目前我已经在 Linode 上部署了我的 rails 应用程序。服务很好,价格合理。
只是一般查询。我试图研究用于专业 360 开发的工具和环境,但 NDA 未涵盖的可用工具和环境并不多。 (请注意,我对 XNA 开发不感兴趣。) 问:PRO 开发的首选/最常见的开发环境是什么?是 V
我收到了 Rob Bovey 写的《Professional Excel Development》一书,它让我大开眼界。 我正在通过错误处理重新调整我的代码。然而,还有很多我不明白的地方。我特别需要知
IDE:Delphi 6 Professional。 我们有大项目。 我无法使用项目组来构建所有这些,因为我在执行此操作时遇到了 OM 错误和奇怪的文件错误。 我的想法是使用 DCC32.exe之前我
Microsoft网站具有冲突的信息: http://msdn.microsoft.com/en-us/library/ms182372.aspx ...使用Visual Studio Premium
所以我刚刚开始从头开始构建一个网站。我以前从未这样做过。我正在服务器上工作。 1。问题: 在我的文件index.php 中,我有以下内容: 效果很好,显示了 Start.html 的内容。在 htm
例如,在javascript中:1 var name = ""; alert("The name is: " + name); 或者2 alert("The name is: "); 在 ht
我是一名优秀的程序员,十分优秀!