Dee*_*hah 6 java android licensing android-lvl flutter
所以我使用 flutter 进行应用程序开发(显然,标题),这是一个付费应用程序,因此需要验证许可证。我正在使用 MedthodChannel 来实现此目的,因为我无法找到颤振本身的方法。
现在的问题是:所以在Java方面,我正在检查许可证验证,然后将结果发送到flutter。这就是方法通道的工作原理。但问题是,即使在验证完成之前,结果也会发送到 flutter,因此 flutter 部分认为许可证没有经过验证,即使是这样。
我在下面附上java端代码
包在.navkargems.diamondtools;
导入 android.os.Bundle;
导入 android.os.Handler;
导入 android.provider.Settings;
导入 android.util.Log;
导入 com.google.android.vending.licensing.LicenseChecker;
导入 com.google.android.vending.licensing.LicenseCheckerCallback;
导入 com.google.android.vending.licensing.StrictPolicy;
导入 io.flutter.app.FlutterActivity;
导入 io.flutter.plugin.common.MethodCall;
导入 io.flutter.plugin.common.MethodChannel;
导入 io.flutter.plugins.GeneratePluginRegistrant;
公共类 MainActivity 扩展 FlutterActivity {
私有静态最终字符串CHANNEL =“in.navkargems.diamondtools/verify”;
私有静态最终字符串_key_to_verify_base64 =“MIIBIjAN ...”;
私有处理程序mHandler;
私有许可证检查器 mChecker;
私有 LicenseCheckerCallback mLicenseCheckerCallback;
布尔许可;
布尔检查许可证;
布尔值 didCheck;
int 消息 = 0;
@覆盖
protected void onCreate(Bundle savingInstanceState) {
super.onCreate(savedInstanceState);
generatedPluginRegistrant.registerWith(this);
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
新的 MethodChannel.MethodCallHandler() {
@覆盖
公共无效onMethodCall(MethodCall methodCall,MethodChannel.Result结果){
if (methodCall.method.equals("verifyLicense")) {
String deviceId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
Log.i("设备 ID", deviceId);
mHandler = new Handler();
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker = new LicenseChecker(getApplicationContext(), new StrictPolicy(), _key_to_verify_base64);
doCheck();
Log.i("许可证", "检查:"+didCheck);
如果(没有检查){
结果.成功(已许可);
}
别的{
结果.成功(假);
}
}
}
}
);
}
私有无效 doCheck() {
确实检查=假;
检查许可证=真;
设置进度条不确定可见性(真);
mChecker.checkAccess(mLicenseCheckerCallback);
}
私有类 MyLicenseCheckerCallback 实现 LicenseCheckerCallback {
@覆盖
公共无效允许(int原因){
如果(正在完成()){
Log.i("许可证", ""+isFinishing());
返回;
}
Log.i("许可证","已接受!");
消息=1;
许可=真实;
检查许可证=假;
确实检查=真;
}
@覆盖
公共无效dontAllow(int原因){
如果(正在完成()){
Log.i("许可证", ""+isFinishing());
返回;
}
Log.i("许可证", "原因:"+原因);
消息=0;
许可=假;
检查许可证=假;
确实检查=真;
}
@覆盖
公共无效应用程序错误(int错误代码){
Log.i("许可证", "错误:"+errorCode);
如果(正在完成()){
Log.i("许可证", ""+isFinishing());
返回;
}
消息=0;
许可=真实;
检查许可证=假;
确实检查=假;
}
}
}
感谢您的时间。
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |