Java 谷歌播放许可证验证库与颤振

Java 谷歌播放许可证验证库与颤振,java,android,flutter,licensing,android-lvl,Java,Android,Flutter,Licensing,Android Lvl,因此,我使用flutter进行应用程序开发(显然是标题),这是一个付费应用程序,因此需要验证许可证。我使用MedthodChannel来实现这个目的,因为我在颤振本身中找不到方法 现在的问题是: 因此,在Java端,我检查许可证验证,然后将结果发送到flifter。这就是方法通道的工作原理。 但问题是,即使在验证完成之前,结果也会发送到颤振,因此颤振部分认为即使许可证已被验证,也不会进行验证 我在下面附上java端代码 package in.navkargems.diamondtools;

因此,我使用flutter进行应用程序开发(显然是标题),这是一个付费应用程序,因此需要验证许可证。我使用MedthodChannel来实现这个目的,因为我在颤振本身中找不到方法

现在的问题是: 因此,在Java端,我检查许可证验证,然后将结果发送到flifter。这就是方法通道的工作原理。 但问题是,即使在验证完成之前,结果也会发送到颤振,因此颤振部分认为即使许可证已被验证,也不会进行验证

我在下面附上java端代码

package in.navkargems.diamondtools; import android.os.Bundle; import android.os.Handler; import android.provider.Settings; import android.util.Log; import com.google.android.vending.licensing.LicenseChecker; import com.google.android.vending.licensing.LicenseCheckerCallback; import com.google.android.vending.licensing.StrictPolicy; import io.flutter.app.FlutterActivity; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugins.GeneratedPluginRegistrant; public class MainActivity extends FlutterActivity { private static final String CHANNEL = "in.navkargems.diamondtools/verify"; private static final String _key_to_verify_base64 = "MIIBIjAN..."; private Handler mHandler; private LicenseChecker mChecker; private LicenseCheckerCallback mLicenseCheckerCallback; boolean licensed; boolean checkingLicense; boolean didCheck; int message = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GeneratedPluginRegistrant.registerWith(this); new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler( new MethodChannel.MethodCallHandler() { @Override public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) { if (methodCall.method.equals("verifyLicense")) { String deviceId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID); Log.i("Device Id", deviceId); mHandler = new Handler(); mLicenseCheckerCallback = new MyLicenseCheckerCallback(); mChecker = new LicenseChecker(getApplicationContext(), new StrictPolicy(), _key_to_verify_base64); doCheck(); Log.i("License", "Check : "+didCheck); if(didCheck){ result.success(licensed); } else{ result.success(false); } } } } ); } private void doCheck() { didCheck = false; checkingLicense = true; setProgressBarIndeterminateVisibility(true); mChecker.checkAccess(mLicenseCheckerCallback); } private class MyLicenseCheckerCallback implements LicenseCheckerCallback { @Override public void allow(int reason) { if(isFinishing()){ Log.i("License", ""+isFinishing()); return; } Log.i("License","Accepted!"); message = 1; licensed = true; checkingLicense = false; didCheck = true; } @Override public void dontAllow(int reason) { if(isFinishing()){ Log.i("License", ""+isFinishing()); return; } Log.i("License", "Reason : "+reason); message = 0; licensed = false; checkingLicense = false; didCheck = true; } @Override public void applicationError(int errorCode) { Log.i("License", "Error : "+errorCode); if(isFinishing()){ Log.i("License", ""+isFinishing()); return; } message = 0; licensed = true; checkingLicense = false; didCheck = false; } } } 封装在.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.flatter.app.flatterActivity; 导入io.flatter.plugin.common.MethodCall; 导入io.flatter.plugin.common.MethodChannel; 导入io.flatter.plugins.GeneratedPluginRegistrant; 公共类MainActivity扩展了公共类MainActivity{ 私有静态最终字符串通道=“in.navkargems.diamondtools/verify”; 私有静态最终字符串_key_to_verify_base64=“MIIBIjAN…”; 私人经理人; 私人持牌人; 私人许可证持有人CheckerCallback mLicenseCheckerCallback; 布尔许可; 布尔检查许可证; 布尔校验; int消息=0; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 生成带有(this)的pluginregistrant.registerWith; 新建MethodChannel(GetFlatterView(),CHANNEL).setMethodCallHandler( 新建MethodChannel.MethodCallHandler(){ @凌驾 MethodCall上的公共无效(MethodCall MethodCall、MethodChannel.Result){ if(methodCall.method.equals(“verifyLicense”)){ String deviceId=Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID); Log.i(“设备Id”,设备Id); mHandler=新处理程序(); mLicenseCheckerCallback=新建MyLicenseCheckerCallback(); mChecker=新的LicenseChecker(getApplicationContext(),new StrictPolicy(),\u key\u to\u verify\u base64); 多切克(); Log.i(“许可证”,“检查:+didCheck”); 如果(检查){ 结果:成功(许可); } 否则{ 结果:成功(假); } } } } ); } 私有void doCheck(){ didCheck=false; checkingLicense=true; SetProgressBarInDeterminateVibility(真); mChecker.checkAccess(mLicenseCheckerCallback); } 私有类MyLicenseCheckerCallback实现LicenseCheckerCallback{ @凌驾 公共无效允许(整数原因){ if(isFinishing()){ Log.i(“许可证”,“isFinishing()); 返回; } Log.i(“许可证”,“已接受!”); 消息=1; 许可=真实; checkingLicense=false; didCheck=true; } @凌驾 公共无效dontAllow(内部原因){ if(isFinishing()){ Log.i(“许可证”,“isFinishing()); 返回; } Log.i(“许可证”、“原因:+原因”); 消息=0; 许可=假; checkingLicense=false; didCheck=true; } @凌驾 公共无效应用程序错误(内部错误代码){ Log.i(“许可证”,“错误:+errorCode”); if(isFinishing()){ Log.i(“许可证”,“isFinishing()); 返回; } 消息=0; 许可=真实; checkingLicense=false; didCheck=false; } } }
感谢您抽出时间。

我仍在寻找解决此问题的颤振侧解决方案。有人要解决这个问题吗?是的,我也是。这个有什么更新吗?