我有一个GPL安卓应用程序,最近已被包含在F-Droid中。
在Google Play中,我使用AdMob获得一些收入,但当应用程序由F-Droid服务器构建时,他们使用this AdMob clone,因此代码构建无需添加二进制专有库。因此,广告不会显示。
但是,我想添加一个小“横幅”,允许用户在广告未显示时访问我的网站:我不会获得添加给我的直接收入,但至少我会允许用户去我的页面,如果他们想要,捐赠。
我的问题是:是否可以通过以下代码了解“IM_USING_THE_REAL_ADMOB”?
另一个选择是知道谁签署了APP。
任何帮助?
LinearLayout layout = (LinearLayout) findViewById(R.id.adLayout);
if(IM_USING_THE_REAL_ADMOB) {
// Google Play version of the app
adView = new AdView(this, AdSize.BANNER, "ad-code");
layout.addView(adView);
AdRequest request = new AdRequest();
adView.loadAd(request);
} else {
// F-Droid versions of the App
ImageView myImage;
layout.AddView(image)
}
我试着看看签名,就像“CommonsWare建议的那样,
PackageManager pm = getPackageManager();
try {
PackageInfo a = pm.getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
byte[] raw = a.signatures[0].toByteArray();
String sig = MessageDigest.getInstance("MD5").digest(raw).toString();
_sourceTextEditor.setText(sig);
}
catch (Exception e) {
return false;
}
但我在安装相同签名应用程序的两部手机中得到了不同的结果。我做错了吗?
答案 0 :(得分:2)
看起来替代AdMob的AdView将始终返回false给isReady和isRefreshing - 可能会将此行为与官方AdMob的预期AdView行为进行比较,并相应地调整您的应用。
答案 1 :(得分:2)
我同意powerj1984,正确的答案适用于虚假的AdMob库,让您知道它是虚假的AdMob库。
如果由于某种原因无法实现,您可以找到为您的应用签名的密钥库的公钥的详细信息。使用PackageManager
and getPackageInfo()
检索自己包的PackageInfo
,并将GET_SIGNATURES
指定为标记。 signatures
上的PackageInfo
字段包含一系列签名,其中只有一个。反过来,这实际上是byte[]
的{{1}}表示。 This sample project显示了如何显示已安装应用的签名信息。
答案 2 :(得分:0)
如果您的应用是GPL,那么人们既拥有源代码,也有权修改源代码。没有办法强迫他们为你提供收入。