比方说,我有一些做X的Android应用程序.免费版本有广告或基本功能.我想要一个支付版本,删除广告并添加额外的功能.
如何使用付费应用作为"许可证密钥"来解锁免费应用中的功能?
因此,用户将安装免费应用程序,然后安装付费应用程序以获得额外功能,但他们仍将运行免费应用程序(现在将解锁).这样做的最佳方法是什么?
如果我能检测是否我的应用程序是使用Android Market安装我想知道(它在市场上的下载列表,并获得更新检查),或者它不是?
这将是一个很好的点来检测,如果该应用程序已没有安装,因为这可能意味着它被偷走,并从SD卡安装.
正如我们所做的那样,当它处于开发模式(构建)时,我有一个由debug.keystore(默认情况下)签名的应用程序.当它投入生产时,我们用我们的私钥签名.有没有办法在运行时确定当前包是用debug.keystore签名的(处于开发模式)还是用我们的私钥签名(处于生产模式).
我尝试过类似的东西
PackageManager packageManager = getPackageManager();
try {
Signature[] signs = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature signature : signs) {
Log.d(TAG, "sign = " + signature.toCharsString());
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我不知道下一步该做什么?这是正确的做法吗?如何获得类似的debug.keystore签名?
我知道存在MD5指纹,keytool -list -keystore ~/.android/debug.keystore但在Signature类中没有"md5指纹"式方法.我想这样做是因为MapView Key,Logging,LicenseChecker和类似的东西.
我想在我的Android应用程序中使用应用程序内计费(而不是创建2个版本的应用程序 - 免费和专业版).如果用户付费,则应在首选项中提供其他选项.我的应用程序与网站(而不是我的)同步数据.每次同步发生时,我想检查用户是否付款.我该怎么办?
我需要检查Android Market是否像这样安装
/*
* Test for existence of Android Market
*/
boolean androidMarketExists = false;
try{
ApplicationInfo info = getPackageManager()
.getApplicationInfo("com.google.process.gapps", 0 );
//application exists
androidMarketExists = true;
} catch( PackageManager.NameNotFoundException e ){
//application doesn't exist
androidMarketExists = false;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道com.google.process.gapps是否是具有Android市场的软件包.
我有一个免费和付费版本的Android应用程序,其中免费版本有时间限制,之后它将用户重定向到市场购买付费版本.这两个版本具有不同的软件包名称,并作为单独的应用程序提交给市场.
但是,当用户购买付费版本时,这并不能取代免费版本 - 它们会同时安装两个版本.我希望它安装在免费版本上.理想情况下,它还将使用新版本的快捷方式替换主屏幕上的任何现有快捷方式,但这并不重要.
有一种优雅的方式来处理这个问题吗?
我有一个应用程序,我想通过市场和我自己的网站分发.我如何只使用一个版本和一个密钥,检查应用程序是否是从市场上下载的?
通过使用不同的密钥签名代码来回答这个问题,但我们理想地想要一个构建.
我有两个版本的应用程序.免费和专业.我将删除免费版本,并将专业版的状态从付费更改为免费,并在应用结算中使用以解锁高级功能,而不是拥有两个不同的应用.已付款的用户应该从启用所有功能开始.
有没有办法检查用户是否在将应用程序更改为免费后购买了应用程序?
从我所读到的,LVL不能这样做.
是否可以使用IAB v3?
我正在创建一个解锁应用,可以删除广告并解锁几个应用中的高级功能.我的计划是只调用PackageManager并验证已安装解锁应用程序,如果是,请验证签名以确保它实际上是我的应用程序.我在这里听到这个答案:检测是否从Android Market下载了应用程序
但是,我想我对我正在验证的签名有点困惑......这是我的公钥,对吗?如果是这样,我如何从现有的应用程序或密钥库中提取它?
android ×9
google-play ×2
android-lvl ×1
apk ×1
billing ×1
download ×1
java ×1
key ×1
keystore ×1
signature ×1