From ea145e977c1f973b8d3b71c9ebc405af11a22582 Mon Sep 17 00:00:00 2001
From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com>
Date: Thu, 13 Jun 2024 17:03:10 +0800
Subject: [PATCH] remove js env
---
.idea/gradle.xml | 1 -
app/AndroidManifest.xml | 99 +---
app/build.gradle | 49 +-
.../com/cege/games/release/MainActivity.java | 500 +-----------------
.../release/activity/BiometricActivity.java | 96 ----
.../release/activity/WebPageActivity.java | 244 ---------
.../games/release/appauth/AppAuthSvr.java | 393 --------------
.../release/oauth/OAuthLoginCbActivity.java | 52 --
.../cege/games/release/oauth/OAuthUtil.java | 61 ---
.../tiktokapi/TikTokEntryActivity.java | 62 ---
.../cege/games/release/wallet/WalletUtil.java | 222 --------
app/src/com/jc/jcfw/JcSDK.java | 108 +---
settings.gradle | 2 -
13 files changed, 11 insertions(+), 1878 deletions(-)
delete mode 100644 app/src/com/cege/games/release/activity/BiometricActivity.java
delete mode 100644 app/src/com/cege/games/release/activity/WebPageActivity.java
delete mode 100644 app/src/com/cege/games/release/appauth/AppAuthSvr.java
delete mode 100644 app/src/com/cege/games/release/oauth/OAuthLoginCbActivity.java
delete mode 100644 app/src/com/cege/games/release/oauth/OAuthUtil.java
delete mode 100644 app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java
delete mode 100644 app/src/com/cege/games/release/wallet/WalletUtil.java
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 9b8dd2b..c9697fb 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -12,7 +12,6 @@
-
diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml
index 5856c54..0ef7a78 100644
--- a/app/AndroidManifest.xml
+++ b/app/AndroidManifest.xml
@@ -14,10 +14,6 @@
android:extractNativeLibs="true"
android:usesCleartextTraffic="true"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
-
-
@@ -32,17 +28,6 @@
android:authorities="com.facebook.app.FacebookContentProvider927390338872834"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/build.gradle b/app/build.gradle
index 6b3f9de..1f77652 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,29 +32,6 @@ android {
versionCode 46
versionName "1.0.46"
- externalNativeBuild {
- ndkBuild {
- if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
- // skip the NDK Build step if PROP_NDK_MODE is none
- targets 'cocos2djs'
- arguments 'NDK_TOOLCHAIN_VERSION=clang'
-
- def module_paths = [project.file(rootProject.ext.cfgs.cocos2dxBasePath),
- project.file(rootProject.ext.cfgs.cocos2dxBasePath+"/cocos"),
- project.file(rootProject.ext.cfgs.cocos2dxBasePath+"/external")]
- if (Os.isFamily(Os.FAMILY_WINDOWS)) {
- arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
- }
- else {
- arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
- }
-
- arguments '-j' + Runtime.runtime.availableProcessors()
- abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
- }
- }
- }
-
manifestPlaceholders = [
'appAuthRedirectScheme': 'com.googleusercontent.apps.53206975661-asnf3qe4bg29p8h981pgf099osvrjbme'
]
@@ -69,10 +46,6 @@ android {
externalNativeBuild {
ndkBuild {
- if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
- // skip the NDK Build step if PROP_NDK_MODE is none
- path "jni/Android.mk"
- }
}
}
@@ -111,6 +84,8 @@ android {
// This flag must be enabled to see properly-symbolicated native
// stack traces in the Crashlytics dashboard.
nativeSymbolUploadEnabled true
+ strippedNativeLibsDir 'build/intermediates/stripped_native_libs/release/out/lib'
+ unstrippedNativeLibsDir 'build/intermediates/merged_native_libs/release/out/lib'
}
}
}
@@ -131,24 +106,6 @@ android {
}
}
-android.applicationVariants.all { variant ->
-// delete previous files first
- delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"
-
- variant.mergeAssetsProvider.get().doLast {
- def sourceDir = rootProject.ext.cfgs.jsFilePath
-
- copy{
- from "${sourceDir}"
- include "Data/js/**"
- into outputDir
- }
- copy {
- from "${sourceDir}/cert/cacert.pem"
- into outputDir
- }
- }
-}
dependencies {
@@ -157,8 +114,6 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
implementation project(':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar'])
- implementation fileTree(dir: rootProject.ext.cfgs.cocos2dxBasePath + "/cocos/platform/android/java/libs", include: ['*.jar'])
- implementation project(':libcocos2dx')
implementation "androidx.appcompat:appcompat:1.0.2"
implementation "androidx.biometric:biometric:1.1.0"
diff --git a/app/src/com/cege/games/release/MainActivity.java b/app/src/com/cege/games/release/MainActivity.java
index 7832d2c..657539c 100644
--- a/app/src/com/cege/games/release/MainActivity.java
+++ b/app/src/com/cege/games/release/MainActivity.java
@@ -1,115 +1,34 @@
package com.cege.games.release;
-import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG;
-import static androidx.biometric.BiometricManager.Authenticators.DEVICE_CREDENTIAL;
-import static org.cocos2dx.lib.Cocos2dxHelper.getActivity;
-
import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
import android.util.Log;
import android.view.Window;
import androidx.annotation.NonNull;
-import androidx.biometric.BiometricManager;
-import com.bytedance.sdk.open.tiktok.TikTokOpenApiFactory;
-import com.bytedance.sdk.open.tiktok.api.TikTokOpenApi;
-import com.bytedance.sdk.open.tiktok.authorize.model.Authorization;
-import com.bytedance.sdk.open.tiktok.base.MediaContent;
-import com.bytedance.sdk.open.tiktok.base.VideoObject;
-import com.bytedance.sdk.open.tiktok.share.Share;
-import com.cege.games.release.activity.WebPageActivity;
-import com.cege.games.release.appauth.AppAuthSvr;
-import com.cege.games.release.oauth.OAuthUtil;
import com.cege.games.release.ui.UIManager;
-import com.cege.games.release.wallet.WalletUtil;
-import com.facebook.AccessToken;
-import com.facebook.CallbackManager;
-import com.facebook.FacebookCallback;
-import com.facebook.FacebookException;
import com.facebook.appevents.AppEventsLogger;
-import com.facebook.login.LoginManager;
-import com.facebook.login.LoginResult;
-import com.facebook.share.model.ShareLinkContent;
-import com.facebook.share.widget.ShareDialog;
-import com.google.android.gms.auth.api.signin.GoogleSignIn;
-import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
-import com.google.android.gms.auth.api.signin.GoogleSignInClient;
-import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
-import com.google.android.gms.common.Scopes;
-import com.google.android.gms.common.api.ApiException;
-import com.google.android.gms.common.api.Scope;
-import com.google.android.gms.tasks.Task;
-import com.google.api.services.drive.DriveScopes;
import com.google.firebase.analytics.FirebaseAnalytics;
-import com.jc.jcfw.JcSDK;
import com.jc.jcfw.google.PayClient;
import com.jc.jcfw.util.JsonUtils;
import com.unity3d.player.UnityPlayerActivity;
-import net.openid.appauth.AuthState;
-
-import org.cocos2dx.lib.Cocos2dxHelper;
-import org.cocos2dx.lib.CocosJSHelper;
import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-public class MainActivity extends UnityPlayerActivity
- implements Cocos2dxHelper.Cocos2dxHelperListener {
+public class MainActivity extends UnityPlayerActivity {
private static final String TAG = MainActivity.class.getSimpleName();
public static MainActivity app;
- // AppAuth
- private static final int RC_AUTH = 0X04;
- // google sign
- private static final int RC_SIGN_IN = 0X05;
- // code for request drive to upload
- private static final int RC_REQUEST_DRIVE_TO_UPLOAD = 0X051;
- // code for request drive to download
- private static final int RC_REQUEST_DRIVE_TO_READ = 0X052;
-
-
- public static final int FILE_SELECTOR_CODE = 0X014;
- private String title;
- private String mFunID;
-
- // AppAuth
- private AppAuthSvr mAppAuthSvr;
- private ExecutorService mExecutor;
-
-
- private TikTokOpenApi tiktokOpenApi;
-
- public String getFunId() {
- return mFunID;
- }
-
- private GoogleSignInClient mGoogleSignInClient;
- // facebook login
- private CallbackManager mCallbackManager;
-
private FirebaseAnalytics mFirebaseAnalytics;
private AppEventsLogger fbLogger;
- private WalletUtil mWalletUtil;
- private OAuthUtil mOAuthUtil;
public boolean isGooglePlayServicesAvailable() {
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS;
+ return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS;
}
@Override
@@ -120,130 +39,31 @@ public class MainActivity extends UnityPlayerActivity
// Obtain the FirebaseAnalytics instance.
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
- onLoadNativeLibraries();
app = this;
- Cocos2dxHelper.init(this);
- CocosJSHelper.initJSEnv(getApplicationContext());
-
- // begin of google sign
-// mGoogleSignInClient = initGsiClient();
- // end of google sign
-
- // begin of google oauth sign
- mAppAuthSvr = new AppAuthSvr(this);
- mExecutor = Executors.newSingleThreadExecutor();
- mAppAuthSvr.init(mExecutor);
- // end of google oauth sign
-
- // begin of facebook login
- initFacebookSDK();
- // end of facebook login
- tiktokOpenApi = TikTokOpenApiFactory.create(this);
PayClient payClient = PayClient.getInstance();
payClient.init(this);
- mWalletUtil = new WalletUtil(this);
- // JSTimers timer = new JSTimers(Looper.getMainLooper());
- // timer.sendEmptyMessage(JSTimers.JS_TICK);
+
+ fbLogger = AppEventsLogger.newLogger(this);
}
- @Override protected void onResume(){
+ @Override
+ protected void onResume() {
super.onResume();
- String[] paramArr = new String[0];
- JcSDK.callNativeJS("", "onGameResume", paramArr);
}
- public static class JSTimers extends Handler {
- public static final int JS_TICK = 0;
-
- public JSTimers(@NonNull Looper looper) {
- super(looper);
- }
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == JS_TICK) {
- JcSDK.tick(0.033f);
- sendEmptyMessageDelayed(JS_TICK, 33);
- } else {
- removeMessages(JS_TICK);
- }
- }
- }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- mCallbackManager.onActivityResult(requestCode, resultCode, data);
UIManager.getSingleton().onActivityResult(this, requestCode, resultCode, data);
- if (resultCode == RESULT_OK && data != null) {
- switch (requestCode) {
- case RC_AUTH:
- mAppAuthSvr.parseLoginResult(data);
- break;
- case RC_SIGN_IN:
- handleSignInResult(GoogleSignIn.getSignedInAccountFromIntent(data));
- break;
- case FILE_SELECTOR_CODE:
- shareToTikTok(mFunID, data.getData());
- break;
- case RC_REQUEST_DRIVE_TO_UPLOAD:
- mExecutor.submit(() -> mWalletUtil.uploadCfgWithGPS(_result -> {}));
- break;
- case RC_REQUEST_DRIVE_TO_READ:
- mExecutor.submit(() -> mWalletUtil.downloadCfgWithGPS(_file -> mWalletUtil.getPassLocal()));
- break;
- }
- } else {
- if (requestCode == RC_REQUEST_DRIVE_TO_UPLOAD || requestCode == RC_REQUEST_DRIVE_TO_READ) {
- mWalletUtil.errorCB("activity result with code: " + resultCode);
- }
- if (requestCode == RC_SIGN_IN) {
- Task task = GoogleSignIn.getSignedInAccountFromIntent(data);
- handleSignInResult(task);
- }
- mFunID = "";
-
- }
}
@Override
protected void onStart() {
super.onStart();
UIManager.getSingleton().onStartActivity(this);
- if (mExecutor.isShutdown()) {
- mExecutor = Executors.newSingleThreadExecutor();
- }
}
- // begin for unity
-
- protected void onLoadNativeLibraries() {
- try {
- ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
- Bundle bundle = ai.metaData;
- String libName = bundle.getString("android.app.lib_name");
- System.loadLibrary(libName);
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void showDialog(String pTitle, String pMessage) {
-
- }
-
- @Override
- public void runOnGLThread(Runnable pRunnable) {
-
- }
-
- private GoogleSignInClient initGsiClient() {
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestScopes(new Scope(Scopes.EMAIL))
- .requestIdToken(getString(R.string.default_web_client_id1))
- .build();
- return GoogleSignIn.getClient(this, gso);
- }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
@@ -253,153 +73,6 @@ public class MainActivity extends UnityPlayerActivity
}
- public void signWithGoogle(String funId) {
- this.mFunID = funId;
- if (isGooglePlayServicesAvailable()) {
- if (mGoogleSignInClient == null) {
- mGoogleSignInClient = initGsiClient();
- }
- GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
- if (account != null) {
- Log.w(TAG, "already login: " + account.getIdToken());
- mGoogleSignInClient.silentSignIn()
- .addOnCompleteListener(this, this::handleSignInResult);
- } else {
- Intent signInIntent = mGoogleSignInClient.getSignInIntent();
- startActivityForResult(signInIntent, RC_SIGN_IN);
- }
- } else {
- Log.d(TAG, "no gms, use app auth");
- AuthState state = mAppAuthSvr.getCurrentState();
- if (state.isAuthorized()) {
- if (state.getNeedsTokenRefresh()) {
- Log.w(TAG, "need refresh accessToken");
- mAppAuthSvr.refreshToken(funId, null);
- } else {
- Log.w(TAG, "already login, accessToken not expired, id token:: " + state.getIdToken());
- JcSDK.nativeCb(this.mFunID, null, state.getIdToken());
- }
- } else {
- Log.w(TAG, "not login");
- mExecutor.submit(() -> mAppAuthSvr.doAuth(funId, null));
- }
- }
- }
-
- public void signOutGoogle(String funId) {
- if (isGooglePlayServicesAvailable()) {
- if (mGoogleSignInClient != null) {
- mGoogleSignInClient.signOut()
- .addOnCompleteListener(this, task -> {
- // ...
- });
- }
- }
- }
-
- private void handleSignInResult(Task completedTask) {
- try {
- GoogleSignInAccount account = completedTask.getResult(ApiException.class);
- Log.w(TAG, "gso signIn success: " + account.getIdToken());
- JcSDK.nativeCb(this.mFunID, null, account.getIdToken());
- // Signed in successfully, show authenticated UI.
- } catch (ApiException e) {
- // The ApiException status code indicates the detailed failure reason.
- // Please refer to the GoogleSignInStatusCodes class reference for more
- // information.
- Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
- JcSDK.nativeCb(this.mFunID, "signInResult:failed code=" + e.getStatusCode(), null);
- }
- }
-
-
- // sign with tiktok
- public void signWithTiktok(String funId) {
- this.mFunID = funId;
- Log.i(TAG, "login with tiktok: " + funId);
- // STEP 1: Create an instance of TiktokOpenApi
-
- // STEP 2: Create an instance of Authorization.Request and set parameters
- Authorization.Request request = new Authorization.Request();
- request.scope = "user.info.basic,video.list";
- request.state = funId;
- tiktokOpenApi.authorize(request);
- }
-
-
- // begin of facebook login
- private void initFacebookSDK() {
- mCallbackManager = CallbackManager.Factory.create();
- fbLogger = AppEventsLogger.newLogger(this);
- LoginManager.getInstance().registerCallback(mCallbackManager,
- new FacebookCallback() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- AccessToken accessToken = AccessToken.getCurrentAccessToken();
- Log.d(TAG, "Login Success:: accessToken: " + accessToken.getToken());
- if (!verifyFbAccessToken(accessToken)) {
- JcSDK.nativeCb(MainActivity.app.mFunID, "access token expired", null);
- }
- }
-
- @Override
- public void onCancel() {
- Log.d(TAG, "Login cancel");
- JcSDK.nativeCb(MainActivity.app.mFunID, "user login cancel", null);
- }
-
- @Override
- public void onError(FacebookException exception) {
- Log.i(TAG, "Login error: " + exception.getMessage());
- JcSDK.nativeCb(MainActivity.app.mFunID, exception.getMessage(), null);
- }
- });
- }
-
- public void signWithFacebook(String funId) {
- Log.i(TAG, "login with facebook: " + funId);
- this.mFunID = funId;
- AccessToken accessToken = AccessToken.getCurrentAccessToken();
- if (!verifyFbAccessToken(accessToken)) {
- LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email"));
- }
- }
-
- public void shareWithFacebook(String content) {
- ShareLinkContent linkContent = new ShareLinkContent.Builder()
- .setContentUrl(Uri.parse("https://www.google.com"))
- .setQuote(content)
- .build();
- ShareDialog.show(this, linkContent);
- }
-
- private boolean verifyFbAccessToken(AccessToken accessToken) {
- boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
- if (isLoggedIn) {
- JcSDK.nativeCb(this.mFunID, null, accessToken.getToken());
- return true;
- } else {
- return false;
- }
- }
- // end of facebook login
-
- public void signWithTwitter(String funId) {
- Log.i(TAG, "login with twitter: " + funId);
- this.mFunID = funId;
- }
-
- public void oauthLogin(String funId, String jsonData) {
- if (this.mOAuthUtil == null) {
- this.mOAuthUtil = new OAuthUtil(this);
- }
- try {
- this.mOAuthUtil.startLogin(funId, jsonData);
- } catch (JSONException e) {
- JcSDK.nativeCb(funId, e.getMessage(), null);
- }
- }
-
public void logEvent(String content) {
try {
Bundle bundle = JsonUtils.convertJsonToBundle(content);
@@ -413,165 +86,4 @@ public class MainActivity extends UnityPlayerActivity
}
}
- public void showPage(String fid, final String url) {
- runOnUiThread(() -> {
- Intent intent = new Intent(this, WebPageActivity.class);
- intent.putExtra("url", url);
- startActivity(intent);
- });
- }
-
- public void shareToTikTok(String funId, Uri uriToImage) {
- this.mFunID = funId;
- grantUriPermission("com.zhiliaoapp.musically",
- uriToImage, Intent.FLAG_GRANT_READ_URI_PERMISSION);
- grantUriPermission("com.ss.android.ugc.trill",
- uriToImage, Intent.FLAG_GRANT_READ_URI_PERMISSION);
- Log.i(TAG, "share to tiktok: " + uriToImage.toString());
- if (tiktokOpenApi.isShareSupportFileProvider()) {
- Share.Request request = new Share.Request();
- ArrayList mUri = new ArrayList<>();
- mUri.add(uriToImage.toString());
- VideoObject videoObject = new VideoObject();
- videoObject.mVideoPaths = mUri;
- MediaContent content = new MediaContent();
- content.mMediaObject = videoObject;
-
- // 3.set required parameters
- request.mMediaContent = content;
- request.mState = funId;
- request.mShareFormat = Share.Format.DEFAULT;
- tiktokOpenApi.share(request);
- }
- // share with Android ShareSheet
- // runOnUiThread(() -> {
- // Log.i(TAG, "share to tiktok: " + uriToImage);
- // Intent shareIntent = new Intent();
- // shareIntent.setAction(Intent.ACTION_SEND);
- // shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
- // shareIntent.setType("video/*");
- // startActivity(Intent.createChooser(shareIntent, "share"));
- // });
- }
- private void openFileSelector() {
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.setType("video/*");
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- startActivityForResult(intent, FILE_SELECTOR_CODE);
- }
-
- public void passStorageState(String funID, String account) {
- Log.i(TAG, "passStorageState with: " + account);
- int touchIDState = BiometricManager.from(this)
- .canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL) == BiometricManager.BIOMETRIC_SUCCESS ? 1 : 0;
- JSONObject result = new JSONObject();
- try {
- result.put("biometrics", touchIDState);
- JcSDK.nativeCb(funID, null, result.toString());
- } catch (JSONException e) {
- JcSDK.nativeCb(funID, "JSON error", null);
- }
- }
-
- private void loginAndRequestDrivePermission(int requestCode) {
- Log.i(TAG, "no drive permission");
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestIdToken(getString(R.string.default_web_client_id1))
- .requestScopes(new Scope(Scopes.EMAIL), new Scope(DriveScopes.DRIVE_APPDATA))
- .build();
- mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
- Intent signInIntent = mGoogleSignInClient.getSignInIntent();
- startActivityForResult(signInIntent, requestCode);
- }
-
- public void storagePass(String funID, String account, String password) {
- Log.i(TAG, String.format("storagePass with: %s | %s", funID, account));
- this.mFunID = funID;
- mWalletUtil.updateParams(funID, account);
- mWalletUtil.savePassToLocal(password, _file -> {
- if (isGooglePlayServicesAvailable()) {
- if (!GoogleSignIn.hasPermissions(
- GoogleSignIn.getLastSignedInAccount(getActivity()),
- new Scope(DriveScopes.DRIVE_APPDATA))) {
- loginAndRequestDrivePermission(RC_REQUEST_DRIVE_TO_UPLOAD);
- } else {
- Log.i(TAG, "had drive permission");
- mWalletUtil.uploadCfgWithGPS(_result -> {});
- }
- } else {
- AuthState state = mAppAuthSvr.getCurrentState();
- if (state.isAuthorized()) {
- if (state.getNeedsTokenRefresh()) {
- Log.d(TAG, "need refresh accessToken");
- mAppAuthSvr.refreshToken(funID, _result -> mWalletUtil.uploadCfgWithApi(state.getAccessToken(), _r->{}));
- } else {
- mWalletUtil.uploadCfgWithApi(state.getAccessToken(), _r->{});
- }
- } else {
- Log.w(TAG, "not login");
- mExecutor.submit(() -> mAppAuthSvr.doAuth(funID, _result -> mWalletUtil.uploadCfgWithApi(state.getAccessToken(), _r->{})));
- }
- }
- });
- // runOnUiThread(() -> {
- // Intent intent = new Intent(this, BiometricActivity.class);
- // intent.putExtra("action", "encrypt");
- // intent.putExtra("funID", funId);
- // intent.putExtra("account", account);
- // intent.putExtra("password", password);
- // startActivity(intent);
- // });
- }
-
- public void authGetStoragePass(String funID, String account) {
- Log.i(TAG, "authGetStoragePass with: " + account);
- this.mFunID = funID;
- mWalletUtil.updateParams(funID, account);
- if (isGooglePlayServicesAvailable()) {
- if (!mWalletUtil.localCfgExists(account)) {
- if (!GoogleSignIn.hasPermissions(
- GoogleSignIn.getLastSignedInAccount(getActivity()),
- new Scope(DriveScopes.DRIVE_APPDATA))) {
- loginAndRequestDrivePermission(RC_REQUEST_DRIVE_TO_READ);
- } else {
- mWalletUtil.downloadCfgWithGPS(_file -> mWalletUtil.getPassLocal());
- }
- } else {
- mWalletUtil.getPassLocal();
- }
- } else {
- if (!mWalletUtil.localCfgExists(account)) {
- AuthState state = mAppAuthSvr.getCurrentState();
- // 1. check whether the google account has been logged in, this situation occurs when non-google login
- // 2. check if already had permission of drive appdata, add permission of drive appdata to auth_config
- // 3. check if need refresh access token
- if (state.isAuthorized()) {
- if (state.getNeedsTokenRefresh()) {
- Log.d(TAG, "need refresh accessToken");
- mAppAuthSvr.refreshToken(funID, _result -> mWalletUtil.downloadCfgWithApi(state.getAccessToken(), _file -> mWalletUtil.getPassLocal()));
- } else {
- Log.d(TAG, "access token no need refresh");
- mWalletUtil.downloadCfgWithApi(state.getAccessToken(), _file -> mWalletUtil.getPassLocal());
- }
- } else {
- Log.w(TAG, "not login");
- mExecutor.submit(() -> mAppAuthSvr.doAuth(funID, _result -> mWalletUtil.downloadCfgWithApi(state.getAccessToken(), _file -> mWalletUtil.getPassLocal())));
- }
- } else {
- mWalletUtil.getPassLocal();
- }
- }
-
- // runOnUiThread(() -> {
- // Intent intent = new Intent(this, BiometricActivity.class);
- // intent.putExtra("action", "decrypt");
- // intent.putExtra("funID", funId);
- // intent.putExtra("account", account);
- // startActivity(intent);
- // });
- }
-
- public void getClientId(String funID) {
- Log.i(TAG, "getClientId ");
- }
}
diff --git a/app/src/com/cege/games/release/activity/BiometricActivity.java b/app/src/com/cege/games/release/activity/BiometricActivity.java
deleted file mode 100644
index 68b633f..0000000
--- a/app/src/com/cege/games/release/activity/BiometricActivity.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.cege.games.release.activity;
-
-import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG;
-import static androidx.biometric.BiometricManager.Authenticators.DEVICE_CREDENTIAL;
-import static androidx.biometric.BiometricPrompt.ERROR_USER_CANCELED;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.security.keystore.KeyInfo;
-import android.util.Base64;
-import android.util.Log;
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.biometric.BiometricManager;
-import androidx.biometric.BiometricPrompt;
-
-import com.cege.games.release.R;
-import com.jc.jcfw.security.BiometricHelper;
-import com.jc.jcfw.security.CryptographyManager;
-import com.jc.jcfw.security.CryptographyManagerImpl;
-import com.jc.jcfw.security.EncryptedData;
-
-import javax.crypto.Cipher;
-
-public class BiometricActivity extends AppCompatActivity {
- private static final String TAG = BiometricActivity.class.getSimpleName();
- private BiometricPrompt.PromptInfo promptInfo;
- private CryptographyManager cryptographyManager;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_biometric);
- Log.i(TAG, "onCreate: " + getIntent().getDataString());
- promptInfo = BiometricHelper.createPromptInfo(this);
- cryptographyManager = new CryptographyManagerImpl();
- Intent intent = getIntent();
- String action = intent.getStringExtra("action");
- String funId = intent.getStringExtra("funid");
- String account = intent.getStringExtra("account");
- // check if action is exists
- if ("encrypt".equals(action)) {
- String password = intent.getStringExtra("password");
- authenticateToEncrypt(funId, password);
- } else if ("decrypt".equals(action)) {
- String iv = intent.getStringExtra("iv");
- authenticateToDecrypt(account, iv);
- }
- }
-
- public void authenticateToEncrypt(String funId, String text) {
- if (BiometricManager.from(this)
- .canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL) == BiometricManager.BIOMETRIC_SUCCESS) {
- Cipher cipher = cryptographyManager.getInitializedCipherForEncryption("cebg_wallet_key");
- BiometricPrompt biometricPrompt = BiometricHelper.createBiometricPrompt(this, _result -> {
- if (_result.isError()) {
- if (_result.getErrcode() == ERROR_USER_CANCELED) {
- // close current activity
- finish();
- }
- return;
- }
- EncryptedData encryptedData = cryptographyManager.encryptData(text, _result.getCipher());
- String encryptedString = Base64.encodeToString(encryptedData.getCiphertext(), Base64.DEFAULT);
- String ivString = Base64.encodeToString(encryptedData.getInitializationVector(), Base64.DEFAULT);
- Log.i(TAG, "encrypted msg: " + encryptedString);
- Log.i(TAG, "encrypted iv: " + ivString);
- finish();
- });
- biometricPrompt.authenticate(promptInfo, new BiometricPrompt.CryptoObject(cipher));
- }
- }
-
- public void authenticateToDecrypt(String text, String iv) {
- if (BiometricManager.from(this)
- .canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL) == BiometricManager.BIOMETRIC_SUCCESS) {
- byte[] ivData = Base64.decode(iv, Base64.DEFAULT);
- byte[] textData = Base64.decode(text, Base64.DEFAULT);
- Cipher cipher = cryptographyManager.getInitializedCipherForDecryption("cebg_wallet_key", ivData);
- BiometricPrompt biometricPrompt = BiometricHelper.createBiometricPrompt(this, _result -> {
- if (_result.isError()) {
- if (_result.getErrcode() == ERROR_USER_CANCELED) {
- // close current activity
- finish();
- }
- return;
- }
- String decryptedMsg = cryptographyManager.decryptData(textData, _result.getCipher());
- Log.i(TAG, "decrypted msg: " + decryptedMsg);
- finish();
- });
- biometricPrompt.authenticate(promptInfo, new BiometricPrompt.CryptoObject(cipher));
- }
- }
-
-}
diff --git a/app/src/com/cege/games/release/activity/WebPageActivity.java b/app/src/com/cege/games/release/activity/WebPageActivity.java
deleted file mode 100644
index 4990ec3..0000000
--- a/app/src/com/cege/games/release/activity/WebPageActivity.java
+++ /dev/null
@@ -1,244 +0,0 @@
-package com.cege.games.release.activity;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.util.Log;
-import android.webkit.ConsoleMessage;
-import android.webkit.CookieManager;
-import android.webkit.WebChromeClient;
-import android.webkit.WebResourceError;
-import android.webkit.WebResourceRequest;
-import android.webkit.WebResourceResponse;
-import android.webkit.WebSettings;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import androidx.annotation.NonNull;
-
-import com.cege.games.release.MainApplication;
-import com.cege.games.release.R;
-import com.cege.games.release.ui.UIManager;
-import com.cege.games.release.webpage.events.CallJSEvent;
-import com.cege.games.release.webpage.events.ProxyCBEvent;
-import com.cege.games.release.webpage.events.WebPageEvent;
-import com.cege.games.release.webpage.WalletInterface;
-import com.google.common.collect.Maps;
-import com.jc.jcfw.JcSDK;
-import com.jc.jcfw.util.UIUtils;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.Map;
-import java.util.function.Consumer;
-
-
-public class WebPageActivity extends Activity {
- private WebView mWebView;
- private final String FUNID_PREFIX = "webpage_";
- private final Map> actionMap = Maps.newHashMap();
- private static final String TAG = WebPageActivity.class.getSimpleName();
-
- @SuppressLint({ "SetJavaScriptEnabled", "DefaultLocale" })
- @Override
- protected void onCreate(android.os.Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- resistActions();
- setContentView(R.layout.activity_web_page);
- WebView.setWebContentsDebuggingEnabled(true);
- mWebView = findViewById(R.id.web_view);
- WebSettings webSettings = mWebView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setDomStorageEnabled(true);
- webSettings.setDatabaseEnabled(true);
- webSettings.setAllowContentAccess(true);
- webSettings.setAppCacheEnabled(true);
- webSettings.setBuiltInZoomControls(true);
- webSettings.setUseWideViewPort(true);
- webSettings.setLoadWithOverviewMode(true);
- webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
- // custom user agent
- webSettings.setUserAgentString(webSettings.getUserAgentString() + " android_game_web");
- CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true);
- // get url from intent
- Intent intent = getIntent();
- String url = intent.getStringExtra("url");
- // show web view
- mWebView.loadUrl(url);
- mWebView.addJavascriptInterface(new WalletInterface(this), "cfwallet_JuEd8Ql5over8kneww");
- mWebView.setWebChromeClient(new WebChromeClient() {
- @Override
- public void onReceivedTitle(WebView view, String title) {
- super.onReceivedTitle(view, title);
- Log.i(TAG, "onReceivedTitle: " + title);
- }
-
- @Override
- public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
- Log.e(TAG, consoleMessage.message());
- return true;
- }
-
- });
- mWebView.setWebViewClient(new WebViewClient() {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
- return super.shouldOverrideUrlLoading(view, request);
- // if ("www.example.com".equals(request.getUrl().getHost())) {
- // // This is my website, so do not override; let my WebView load the page
- // return false;
- // }
- }
-
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- Log.i(TAG, "onPageStarted: " + url);
- String gameData = MainApplication.application.getGameData();
- String jsCode = String.format("window.platform='android_game_web'; window.gameData='%s';", gameData);
- callPageJS(jsCode);
- }
-
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- }
-
- @Override
- public void onLoadResource(WebView view, String url) {
- Log.i(TAG, "onLoadResource: " + url);
- }
-
- @Override
- public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
- super.onReceivedError(view, request, error);
- Log.e(TAG, "onReceivedError: " + error);
- }
-
- @Override
- public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
- super.onReceivedHttpError(view, request, errorResponse);
- Log.e(TAG, "onReceivedHttpError: " + errorResponse);
- }
-
- @Override
- public void onReceivedSslError(WebView view, android.webkit.SslErrorHandler handler,
- android.net.http.SslError error) {
- Log.e(TAG, "onReceivedSslError: " + error.toString());
- }
-
- });
- EventBus.getDefault().register(this);
- }
-
- @Override
- public void onStart() {
- super.onStart();
- UIManager.getSingleton().onStartActivity(this);
- }
-
- @Override
- public void onDestroy() {
- EventBus.getDefault().unregister(this);
- super.onDestroy();
- }
-
- private void asyncThread(Runnable runnable) {
- new Thread(runnable).start();
- }
-
- private void resistActions() {
- actionMap.put("closepage", _data -> {
- finish();
- });
- actionMap.put("proxyMethod", _data -> {
- try {
- String funId = FUNID_PREFIX + _data.getString("funid");
- String methodName = _data.getString("methodname");
- JSONArray params = _data.getJSONArray("params");
- String[] paramArr = new String[params.length()];
- for (int i = 0; i < params.length(); i++) {
- paramArr[i] = params.getString(i);
- }
- JcSDK.callNativeJS(funId, methodName, paramArr);
- } catch (JSONException e) {
- throw new RuntimeException(e);
- }
- });
- actionMap.put("scanQRCode", _data -> {
- try {
- String funId = FUNID_PREFIX + _data.getString("funid");
- String title = _data.getString("title");
- UIManager.getSingleton().showQRScan(funId, title);
- } catch (JSONException e) {
- throw new RuntimeException(e);
- }
-
- });
- actionMap.put("showQRCode", _data -> {
- try {
- String funId = FUNID_PREFIX + _data.getString("funid");
- String title = _data.getString("title");
- UIUtils.showQRCode(this, title, "");
- } catch (JSONException e) {
- throw new RuntimeException(e);
- }
- });
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- UIManager.getSingleton().onActivityResult(this, requestCode, resultCode, data);
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- // Forward results to EasyPermissions
- UIManager.getSingleton().onRequestPermissionsResult(requestCode, permissions, grantResults);
- }
- public void callPageJS(String javascript) {
- mWebView.evaluateJavascript(javascript, s -> {
- Log.i("PAGE", s);
- });
- }
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onPageEvent(WebPageEvent event) {
- Log.i(TAG, "on page event: " + event.getDataStr());
- try {
- JSONObject data = new JSONObject(event.getDataStr());
- String action = data.getString("action");
- // JSONArray params = data.getJSONArray("params");
- if (actionMap.containsKey(action)) {
- actionMap.get(action).accept(data);
- } else {
- Log.w(TAG, String.format("unknown action: %s, data: %s", action, event.getDataStr()));
- }
- } catch (JSONException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onCallJSEvent(CallJSEvent event) {
- String funId = event.getFunId();
- if (funId.indexOf(FUNID_PREFIX) == 0) {
- funId = funId.replace(FUNID_PREFIX, "");
- }
- callPageJS("nativeCall('" + funId + "', '" + event.getData() + "');");
- }
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onProxyCBEvent(ProxyCBEvent event) {
- String funId = event.getFunId();
- if (funId.indexOf(FUNID_PREFIX) == 0) {
- funId = funId.replace(FUNID_PREFIX, "");
- }
- callPageJS("proxyCallback('" + funId + "', '" + event.getData() + "');");
- }
-}
diff --git a/app/src/com/cege/games/release/appauth/AppAuthSvr.java b/app/src/com/cege/games/release/appauth/AppAuthSvr.java
deleted file mode 100644
index 85f02cf..0000000
--- a/app/src/com/cege/games/release/appauth/AppAuthSvr.java
+++ /dev/null
@@ -1,393 +0,0 @@
-package com.cege.games.release.appauth;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.net.Uri;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.MainThread;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.WorkerThread;
-import androidx.browser.customtabs.CustomTabsIntent;
-
-import com.jc.jcfw.JcSDK;
-import com.jc.jcfw.appauth.AuthStateManager;
-import com.jc.jcfw.appauth.JConfiguration;
-import com.jc.jcfw.util.ThreadUtils;
-
-import net.openid.appauth.AppAuthConfiguration;
-import net.openid.appauth.AuthState;
-import net.openid.appauth.AuthorizationException;
-import net.openid.appauth.AuthorizationRequest;
-import net.openid.appauth.AuthorizationResponse;
-import net.openid.appauth.AuthorizationService;
-import net.openid.appauth.AuthorizationServiceConfiguration;
-import net.openid.appauth.ClientAuthentication;
-import net.openid.appauth.ClientSecretBasic;
-import net.openid.appauth.RegistrationRequest;
-import net.openid.appauth.RegistrationResponse;
-import net.openid.appauth.ResponseTypeValues;
-import net.openid.appauth.TokenRequest;
-import net.openid.appauth.TokenResponse;
-import net.openid.appauth.browser.AnyBrowserMatcher;
-import net.openid.appauth.browser.BrowserMatcher;
-
-import java.util.Collections;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Consumer;
-
-public class AppAuthSvr {
- private final String TAG = getClass().getSimpleName();
- private final Activity activity;
- private AuthorizationService mAuthService;
- private AuthStateManager mAuthStateManager;
- private JConfiguration mConfiguration;
- private ExecutorService mExecutor;
- private final AtomicReference mClientId = new AtomicReference<>();
- private final AtomicReference mAuthRequest = new AtomicReference<>();
- private final AtomicReference mAuthIntent = new AtomicReference<>();
- private CountDownLatch mAuthIntentLatch = new CountDownLatch(1);
-
- private String mFunID;
-
- private static final int RC_AUTH = 0X04;
-
- private Consumer loginCbAction = null;
-
- @NonNull
- private final BrowserMatcher mBrowserMatcher = AnyBrowserMatcher.INSTANCE;
-
- public AppAuthSvr(Activity activity) {
- this.activity = activity;
- }
-
- public void init(ExecutorService executorService) {
- mExecutor = executorService;
- mAuthStateManager = AuthStateManager.getInstance(activity);
- mConfiguration = JConfiguration.getInstance(activity);
- mExecutor.submit(this::initializeAppAuth);
- }
-
- public void setFunID(String funID) {
- this.mFunID = funID;
- }
-
- public void setLoginCbAction(Consumer func) {
- this.loginCbAction = func;
- }
-
- public AuthState getCurrentState() {
- return mAuthStateManager.getCurrent();
- }
-
- /**
- * Performs the authorization request, using the browser selected in the
- * spinner,
- * and a user-provided `login_hint` if available.
- */
- @WorkerThread
- public void doAuth(String funID, Consumer func) {
- this.mFunID = funID;
- this.loginCbAction = func;
- try {
- mAuthIntentLatch.await();
- } catch (InterruptedException ex) {
- Log.w(TAG, "Interrupted while waiting for auth intent");
- }
-
- Intent intent = mAuthService.getAuthorizationRequestIntent(
- mAuthRequest.get(),
- mAuthIntent.get());
- activity.startActivityForResult(intent, RC_AUTH);
- }
-
- public void parseLoginResult(@NonNull Intent data) {
- AuthorizationResponse response = AuthorizationResponse.fromIntent(data);
- AuthorizationException ex = AuthorizationException.fromIntent(data);
- if (response != null || ex != null) {
- mAuthStateManager.updateAfterAuthorization(response, ex);
- }
- if (response != null && response.authorizationCode != null) {
- // authorization code exchange is required
- mAuthStateManager.updateAfterAuthorization(response, ex);
- exchangeAuthorizationCode(response);
- } else if (ex != null) {
- Log.i(TAG, "Authorization flow failed: " + ex.getMessage());
- errorCB("Authorization flow failed: " + ex.getMessage());
- } else {
- Log.i(TAG, "No authorization state retained - reauthorization required");
- errorCB("No authorization state retained - reauthorization required");
- }
- }
-
- public void refreshToken(String funID, Consumer func) {
- this.mFunID = funID;
- this.loginCbAction = func;
- AuthState state = getCurrentState();
- performTokenRequest(state.createTokenRefreshRequest(), this::handleCodeExchangeResponse);
- }
-
- /**
- * Initializes the authorization service configuration if necessary, either from
- * the local
- * static values or by retrieving an OpenID discovery document.
- */
- @WorkerThread
- private void initializeAppAuth() {
- Log.i(TAG, "Initializing AppAuth");
- recreateAuthorizationService();
-
- if (mAuthStateManager.getCurrent().getAuthorizationServiceConfiguration() != null) {
- // configuration is already created, skip to client initialization
- Log.i(TAG, "auth config already established");
- initializeClient();
- return;
- }
-
- // if we are not using discovery, build the authorization service configuration
- // directly
- // from the static configuration values.
- if (mConfiguration.getDiscoveryUri() == null) {
- Log.i(TAG, "Creating auth config from res/raw/auth_config.json");
- AuthorizationServiceConfiguration config = new AuthorizationServiceConfiguration(
- mConfiguration.getAuthEndpointUri(),
- mConfiguration.getTokenEndpointUri(),
- mConfiguration.getRegistrationEndpointUri(),
- mConfiguration.getEndSessionEndpoint());
-
- mAuthStateManager.replace(new AuthState(config));
- initializeClient();
- return;
- }
-
- // WrongThread inference is incorrect for lambdas
- // noinspection WrongThread
- Log.i(TAG, "Retrieving OpenID discovery doc");
- AuthorizationServiceConfiguration.fetchFromUrl(
- mConfiguration.getDiscoveryUri(),
- this::handleConfigurationRetrievalResult,
- mConfiguration.getConnectionBuilder());
- }
-
- @MainThread
- private void handleConfigurationRetrievalResult(
- AuthorizationServiceConfiguration config,
- AuthorizationException ex) {
- if (config == null) {
- Log.i(TAG, "Failed to retrieve discovery document", ex);
- return;
- }
-
- Log.i(TAG, "Discovery document retrieved");
- mAuthStateManager.replace(new AuthState(config));
- mExecutor.submit(this::initializeClient);
- }
-
- private void recreateAuthorizationService() {
- if (mAuthService != null) {
- Log.i(TAG, "Discarding existing AuthService instance");
- mAuthService.dispose();
- }
- mAuthService = createAuthorizationService();
- mAuthRequest.set(null);
- mAuthIntent.set(null);
- }
-
- private AuthorizationService createAuthorizationService() {
- Log.i(TAG, "Creating authorization service");
- AppAuthConfiguration.Builder builder = new AppAuthConfiguration.Builder();
- builder.setBrowserMatcher(mBrowserMatcher);
- builder.setConnectionBuilder(mConfiguration.getConnectionBuilder());
-
- return new AuthorizationService(activity, builder.build());
- }
-
- private void createAuthRequest(@Nullable String loginHint) {
- Log.i(TAG, "Creating auth request for login hint: " + loginHint);
- AuthorizationRequest.Builder authRequestBuilder = new AuthorizationRequest.Builder(
- mAuthStateManager.getCurrent().getAuthorizationServiceConfiguration(),
- mClientId.get(),
- ResponseTypeValues.CODE,
- mConfiguration.getRedirectUri())
- // apple need `form_post` when authorization_scope has `name email `
- // .setResponseMode("form_post")
- // .setResponseType("code id_token")
- .setScope(mConfiguration.getScope());
- if (!TextUtils.isEmpty(loginHint)) {
- authRequestBuilder.setLoginHint(loginHint);
- }
- mAuthRequest.set(authRequestBuilder.build());
- }
-
- private void warmUpBrowser() {
- mAuthIntentLatch = new CountDownLatch(1);
- mExecutor.execute(() -> {
- Log.i(TAG, "Warming up browser instance for auth request");
- Uri uri = mAuthRequest.get().toUri();
- Log.d(TAG, "URI: " + uri);
- CustomTabsIntent.Builder intentBuilder = mAuthService.createCustomTabsIntentBuilder(uri);
- mAuthIntent.set(intentBuilder.build());
- mAuthIntentLatch.countDown();
- });
- }
-
- @MainThread
- private void initializeAuthRequest() {
- createAuthRequest("");
- warmUpBrowser();
- displayAuthOptions();
- }
-
- /**
- * Initiates a dynamic registration request if a client ID is not provided by
- * the static
- * configuration.
- */
- @WorkerThread
- private void initializeClient() {
- if (mConfiguration.getClientId() != null) {
- Log.i(TAG, "Using static client ID: " + mConfiguration.getClientId());
- // use a statically configured client ID
- mClientId.set(mConfiguration.getClientId());
- ThreadUtils.runInMain(this::initializeAuthRequest);
- return;
- }
-
- RegistrationResponse lastResponse = mAuthStateManager.getCurrent().getLastRegistrationResponse();
- if (lastResponse != null) {
- Log.i(TAG, "Using dynamic client ID: " + lastResponse.clientId);
- // already dynamically registered a client ID
- mClientId.set(lastResponse.clientId);
- ThreadUtils.runInMain(this::initializeAuthRequest);
- return;
- }
-
- // WrongThread inference is incorrect for lambdas
- // noinspection WrongThread
- Log.i(TAG, "Dynamically registering client");
-
- RegistrationRequest registrationRequest = new RegistrationRequest.Builder(
- mAuthStateManager.getCurrent().getAuthorizationServiceConfiguration(),
- Collections.singletonList(mConfiguration.getRedirectUri()))
- .setTokenEndpointAuthenticationMethod(ClientSecretBasic.NAME)
- .build();
-
- mAuthService.performRegistrationRequest(
- registrationRequest,
- this::handleRegistrationResponse);
- }
-
- private void handleRegistrationResponse(
- RegistrationResponse response,
- AuthorizationException ex) {
- mAuthStateManager.updateAfterRegistration(response, ex);
- if (response == null) {
- Log.i(TAG, "Failed to dynamically register client", ex);
- return;
- }
-
- Log.i(TAG, "Dynamically registered client: " + response.clientId);
- mClientId.set(response.clientId);
- initializeAuthRequest();
- }
-
- private void displayAuthOptions() {
- AuthState state = mAuthStateManager.getCurrent();
- AuthorizationServiceConfiguration config = state.getAuthorizationServiceConfiguration();
-
- String authEndpointStr;
- if (config.discoveryDoc != null) {
- authEndpointStr = "Discovered auth endpoint: \n";
- } else {
- authEndpointStr = "Static auth endpoint: \n";
- }
- authEndpointStr += config.authorizationEndpoint;
- Log.i(TAG, authEndpointStr);
-
- String clientIdStr;
- if (state.getLastRegistrationResponse() != null) {
- clientIdStr = "Dynamic client ID: \n";
- } else {
- clientIdStr = "Static client ID: \n";
- }
- clientIdStr += mClientId;
- Log.i(TAG, clientIdStr);
- }
-
- @MainThread
- private void exchangeAuthorizationCode(AuthorizationResponse authorizationResponse) {
- Log.d(TAG, "Exchanging authorization code");
- performTokenRequest(
- authorizationResponse.createTokenExchangeRequest(),
- this::handleCodeExchangeResponse);
- }
-
- @MainThread
- private void performTokenRequest(
- TokenRequest request,
- AuthorizationService.TokenResponseCallback callback) {
- ClientAuthentication clientAuthentication;
- try {
- clientAuthentication = mAuthStateManager.getCurrent().getClientAuthentication();
- } catch (ClientAuthentication.UnsupportedAuthenticationMethod ex) {
- Log.d(TAG, "Token request cannot be made, client authentication for the token "
- + "endpoint could not be constructed (%s)", ex);
- return;
- }
-
- mAuthService.performTokenRequest(
- request,
- clientAuthentication,
- callback);
- }
-
- @WorkerThread
- private void handleCodeExchangeResponse(
- @Nullable TokenResponse tokenResponse,
- @Nullable AuthorizationException authException) {
- mAuthStateManager.updateAfterTokenResponse(tokenResponse, authException);
- if (!mAuthStateManager.getCurrent().isAuthorized()) {
- final String message = "Authorization Code exchange failed: "
- + ((authException != null) ? authException.error : "");
- Log.d(TAG, message);
- errorCB(message);
- } else {
- checkAuthStateAndCB();
- }
- }
-
- private void checkAuthStateAndCB() {
- AuthState state = mAuthStateManager.getCurrent();
- Log.d(TAG, "login success, auth state: " + state.isAuthorized());
- Log.d(TAG, "id token : " + state.getIdToken());
- Log.d(TAG, "access token: " + state.getAccessToken());
- Log.d(TAG, "refresh token: " + state.getRefreshToken());
- mAuthStateManager.replace(state);
- if (loginCbAction != null) {
- mExecutor.submit(() -> {
- loginCbAction.accept("success");
- clearParams();
- });
- } else {
- successCB(state.getIdToken());
- }
- }
- private void clearParams() {
- this.mFunID = null;
- this.loginCbAction = null;
- }
- public void errorCB(String msg) {
- JcSDK.nativeCb(mFunID, msg, null);
- clearParams();
- }
-
- public void successCB(String dataStr) {
- JcSDK.nativeCb(mFunID, null, dataStr);
- clearParams();
- }
-
-}
diff --git a/app/src/com/cege/games/release/oauth/OAuthLoginCbActivity.java b/app/src/com/cege/games/release/oauth/OAuthLoginCbActivity.java
deleted file mode 100644
index 787ee7b..0000000
--- a/app/src/com/cege/games/release/oauth/OAuthLoginCbActivity.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.cege.games.release.oauth;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-
-import androidx.annotation.Nullable;
-
-import com.cege.games.release.MainActivity;
-import com.jc.jcfw.JcSDK;
-
-public class OAuthLoginCbActivity extends Activity {
- private static final String TAG = OAuthLoginCbActivity.class.getSimpleName();
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Log.d(TAG, "receive oauth login callback");
- Intent intent = getIntent();
-
- if (Intent.ACTION_VIEW.equals(intent.getAction())) {
- Uri uri = intent.getData();
- String error = uri.getQueryParameter("error");
- String state = uri.getQueryParameter("state");
- if (null != error && !error.isEmpty()) {
- JcSDK.nativeCb(state, error, null);
- } else {
- String token = uri.getQueryParameter("token");
- // if token is null, get token and state from uri fragment
- if (null == token || "undefined".equals(token) || token.isEmpty()){
- String fragment = uri.getFragment();
- String[] vals = fragment.split("&");
- for (String val : vals) {
- if (val.startsWith("token=")) {
- token = val.substring(6);
- } else if (val.startsWith("id_token=")) {
- token = val.substring(9);
- } else if (val.startsWith("state=")) {
- state = val.substring(6);
- }
- }
- }
- JcSDK.nativeCb(state, null, token);
- }
- Intent intentMain = new Intent(this, MainActivity.class);
- startActivity(intentMain);
- finish();
- }
- }
-}
diff --git a/app/src/com/cege/games/release/oauth/OAuthUtil.java b/app/src/com/cege/games/release/oauth/OAuthUtil.java
deleted file mode 100644
index f1c287e..0000000
--- a/app/src/com/cege/games/release/oauth/OAuthUtil.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.cege.games.release.oauth;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.net.Uri;
-
-
-import net.openid.appauth.AuthorizationRequest;
-import net.openid.appauth.AuthorizationService;
-import net.openid.appauth.AuthorizationServiceConfiguration;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-public class OAuthUtil {
- private final Activity mActivity;
-
- public OAuthUtil(Activity activity) {
- this.mActivity = activity;
- }
-
- /**
- *
- * @param funId
- * @param jsonData: {
- * "endpoint": "",
- * "client_id": "",
- * "redirect_uri": "",
- * "response_type": "code",
- * "response_mode": "form_post", nullable
- * "scopes": "",
- * }
- * @throws JSONException
- */
- public void startLogin(String funId, String jsonData) throws JSONException {
- JSONObject data = new JSONObject(jsonData);
- AuthorizationServiceConfiguration config = new AuthorizationServiceConfiguration(
- Uri.parse(data.getString("endpoint")),
- Uri.parse("")
- );
- AuthorizationRequest.Builder authRequestBuilder = new AuthorizationRequest.Builder(
- config,
- data.getString("client_id"),
- data.getString("response_type"),
- Uri.parse(data.getString("redirect_uri"))
- );
- String[] scopes = data.getString("scopes").split(" +");
- if (data.has("response_mode")) {
- authRequestBuilder.setResponseMode(data.getString("response_mode"));
- }
- AuthorizationRequest authRequest = authRequestBuilder
- .setScopes(scopes)
- .setCodeVerifier(null, null, null)
- .setState(funId)
- .setNonce(funId)
- .build();
- AuthorizationService service = new AuthorizationService(this.mActivity);
- Intent authIntent = service.getAuthorizationRequestIntent(authRequest);
- this.mActivity.startActivity(authIntent);
- }
-}
diff --git a/app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java b/app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java
deleted file mode 100644
index 3d1ab14..0000000
--- a/app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.cege.games.release.tiktokapi;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.bytedance.sdk.open.tiktok.CommonConstants;
-import com.bytedance.sdk.open.tiktok.TikTokOpenApiFactory;
-import com.bytedance.sdk.open.tiktok.api.TikTokOpenApi;
-import com.bytedance.sdk.open.tiktok.authorize.model.Authorization;
-import com.bytedance.sdk.open.tiktok.common.handler.IApiEventHandler;
-import com.bytedance.sdk.open.tiktok.common.model.BaseReq;
-import com.bytedance.sdk.open.tiktok.common.model.BaseResp;
-import com.bytedance.sdk.open.tiktok.share.Share;
-import com.jc.jcfw.JcSDK;
-
-import androidx.annotation.Nullable;
-
-public class TikTokEntryActivity extends Activity implements IApiEventHandler {
- private static final String TAG = TikTokEntryActivity.class.getSimpleName();
- TikTokOpenApi ttOpenApi;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ttOpenApi= TikTokOpenApiFactory.create(this);
- ttOpenApi.handleIntent(getIntent(),this); // receive and parse callback
- }
- @Override
- public void onReq(BaseReq req) {
- }
- @Override
- public void onResp(BaseResp resp) {
- if (resp instanceof Authorization.Response) {
- Authorization.Response response = (Authorization.Response) resp;
-// Log.i(TAG, "errorCode: " + response.errorCode);
-// Log.i(TAG, "errorMsg: " + response.errorMsg);
-// Log.i(TAG, "authCode: " + response.authCode);
-// Log.i(TAG, "state: " + response.state);
-// Log.i(TAG, "grantedPermissions: " + response.grantedPermissions);
- if (response.errorCode == 0) {
- JcSDK.nativeCb(response.state, null, response.authCode);
- } else {
- JcSDK.nativeCb(response.state, response.errorMsg, null);
- }
- finish();
- } else if (resp.getType() == CommonConstants.ModeType.SHARE_CONTENT_TO_TT_RESP) {
- Share.Response response = (Share.Response) resp;
- Log.i(TAG, "share result code:" + response.errorCode + " errorMessage:" + response.errorMsg);
- if (response.errorCode == 0) {
- JcSDK.nativeCb(response.state, null, "1");
- } else {
- JcSDK.nativeCb(response.state, response.errorMsg, null);
- }
- finish();
- }
- }
- @Override
- public void onErrorIntent(@Nullable Intent intent) {
- JcSDK.nativeCb(null, "error intent", null);
- }
-}
diff --git a/app/src/com/cege/games/release/wallet/WalletUtil.java b/app/src/com/cege/games/release/wallet/WalletUtil.java
deleted file mode 100644
index fee3aec..0000000
--- a/app/src/com/cege/games/release/wallet/WalletUtil.java
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.cege.games.release.wallet;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.cege.games.release.R;
-import com.google.android.gms.auth.api.signin.GoogleSignIn;
-import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
-import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
-import com.google.api.client.googleapis.json.GoogleJsonResponseException;
-import com.google.api.services.drive.Drive;
-import com.google.api.services.drive.DriveScopes;
-import com.google.common.base.Strings;
-import com.jc.jcfw.JcSDK;
-import com.jc.jcfw.NativeResult;
-import com.jc.jcfw.util.DriveUtils;
-import com.jc.jcfw.util.DriverApiUtils;
-import com.jc.jcfw.util.FileUtils;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.function.Consumer;
-
-public class WalletUtil {
- private final Context mContext;
-
- private String funID;
- private String account;
- public WalletUtil(Context context) {
- this.mContext = context;
- }
-
- private final String TAG = getClass().getSimpleName();
-
- public void updateParams(String funID, String account) {
- this.funID = funID;
- this.account = account;
- }
-
- public void clearParams() {
- this.funID = null;
- this.account = null;
- }
-
- public String getAccount() {
- return account;
- }
-
- public void errorCB(String msg) {
- JcSDK.nativeCb(funID, msg, null);
- clearParams();
- }
-
- public void successCB(String dataStr) {
- JcSDK.nativeCb(funID, null, dataStr);
- clearParams();
- }
-
- public static String generateFileName(String account) {
- return String.format("wallet_%s.json", account);
- }
-
- public File getWalletCfgFile(String account) {
- String filename = generateFileName(account);
- File dic = new File(mContext.getFilesDir() + "/wallets");
- if (!dic.exists()) {
- dic.mkdir();
- }
- return new File(mContext.getFilesDir() + "/wallets", filename);
- }
-
- public void savePassToLocal(String pass, Consumer func) {
- File filePath = getWalletCfgFile(account);
- JSONObject content = new JSONObject();
- try {
- content.put("pass", pass);
- FileUtils.writeFile(filePath, content.toString());
- func.accept(filePath);
- } catch (JSONException | IOException e) {
- errorCB(e.getMessage());
- }
- }
-
- public void getPassLocal() {
- try {
- JSONObject json = loadLocalCfg(account);
- String passEncrypted = json.getString("pass");
- String passDecrypted = JcSDK.decryptPass(account, passEncrypted);
- successCB(passDecrypted);
- } catch (JSONException | IOException e) {
- errorCB(e.getMessage());
- }
- }
-
- public boolean localCfgExists(String account) {
- File filePath = getWalletCfgFile(account);
- return filePath.exists();
- }
-
- public JSONObject loadLocalCfg(String account) throws JSONException, IOException {
- File filePath = getWalletCfgFile(account);
- if (!filePath.exists()) {
- return null;
- }
- return FileUtils.readJsonFromFile(filePath);
- }
-
- public void uploadCfgWithGPS(Consumer func) {
- GoogleSignInAccount ga = GoogleSignIn.getLastSignedInAccount(mContext);
- GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(mContext,
- Collections.singletonList(DriveScopes.DRIVE_APPDATA));
- credential.setSelectedAccount(ga.getAccount());
- Drive service = DriveUtils.generateService(credential, mContext.getString(R.string.app_name));
- try {
- File file = getWalletCfgFile(account);
- String fileName = file.getName();
- String fileId = DriveUtils.queryOneAppFile(service, fileName);
- if (Strings.isNullOrEmpty(fileId)) {
- Log.i(TAG, String.format("%s not exists in drive, upload...", fileName));
- fileId = DriveUtils.uploadAppFile(service, file, "application/json");
- }
- Log.i(TAG, "File ID: " + fileId);
- func.accept(new NativeResult(funID, null, fileId));
- successCB(fileId);
- } catch (GoogleJsonResponseException e) {
- Log.i(TAG, "Unable to create file: " + e.getDetails());
- func.accept(new NativeResult(funID, e.getMessage(), null));
- errorCB("Unable to create file: " +e.getMessage());
- } catch (IOException e) {
- Log.i(TAG, e.getMessage());
- func.accept(new NativeResult(funID, e.getMessage(), null));
- errorCB("Unable to create file: " + e.getMessage());
- }
- }
-
- public void downloadCfgWithGPS(Consumer func) {
- GoogleSignInAccount ga = GoogleSignIn.getLastSignedInAccount(mContext);
- GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(mContext,
- Collections.singletonList(DriveScopes.DRIVE_APPDATA));
- credential.setSelectedAccount(ga.getAccount());
- Drive service = DriveUtils.generateService(credential, mContext.getString(R.string.app_name));
- String fileName = generateFileName(account);
- String fileId = DriveUtils.queryOneAppFile(service, fileName);
-
- if (Strings.isNullOrEmpty(fileId)) {
- Log.i(TAG, "file not found in drive");
- errorCB("file not found in drive");
- return;
- }
- boolean downloadSuccess = false;
- int count = 0;
- File fileLocal = getWalletCfgFile(account);
- while (!downloadSuccess && count++ < 10) {
- Log.i(TAG, String.format("download file: %s with GPS, try: %d", fileName, count));
- try {
- String jsonStr = DriveUtils.downloadFile(service, fileId);
- FileUtils.writeFile(fileLocal, jsonStr);
- downloadSuccess = true;
- } catch (IOException e) {
- Log.i(TAG, "error download file with GPS");
- }
- }
- if (downloadSuccess) {
- func.accept(fileLocal);
- } else {
- errorCB("error download file with GPS");
- }
-
- }
-
- public void downloadCfgWithApi(String accessToken, Consumer func) {
- DriverApiUtils api = new DriverApiUtils(accessToken);
- String fileName = generateFileName(account);
- File fileLocal = getWalletCfgFile(account);
- boolean downloadSuccess = false;
- int count = 0;
- while (!downloadSuccess && count++ < 10) {
- Log.i(TAG, String.format("download file: %s with api, try: %d", fileName, count));
- try {
- String fileId = api.queryOneAppFile(fileName);
- if (Strings.isNullOrEmpty(fileId)) {
- Log.i(TAG, "file not found in drive");
- throw new IOException();
- }
- String jsonStr = api.fileInfo(fileId);
- FileUtils.writeFile(fileLocal, jsonStr);
- downloadSuccess = true;
- } catch (IOException | JSONException e) {
- Log.i(TAG, "error download file with api");
- }
- }
- if (downloadSuccess) {
- func.accept(fileLocal);
- } else {
- errorCB("error download file with api");
- }
- }
-
- public void uploadCfgWithApi(String accessToken, Consumer func) {
- DriverApiUtils api = new DriverApiUtils(accessToken);
- File fileLocal = getWalletCfgFile(account);
- try {
- String fileName = generateFileName(account);
- String fileId = api.queryOneAppFile(fileName);
- if (Strings.isNullOrEmpty(fileId)) {
- String rep = api.uploadFile(fileLocal, "application/json");
- JSONObject repData = new JSONObject(rep);
- fileId = repData.getString("id");
- }
- Log.i(TAG, "success upload file with api, ID: " + fileId);
- func.accept(new NativeResult(funID, null, fileId));
- successCB(fileId);
- } catch (IOException | JSONException e) {
- func.accept(new NativeResult(funID, e.getMessage(), null));
- errorCB("error upload file with api: " + e.getMessage());
- }
- }
-}
diff --git a/app/src/com/jc/jcfw/JcSDK.java b/app/src/com/jc/jcfw/JcSDK.java
index b7ffd31..b284319 100644
--- a/app/src/com/jc/jcfw/JcSDK.java
+++ b/app/src/com/jc/jcfw/JcSDK.java
@@ -1,7 +1,5 @@
package com.jc.jcfw;
-import static com.cege.games.release.Constants.FUNID_PREFIX;
-
import android.annotation.SuppressLint;
import android.content.ActivityNotFoundException;
import android.content.Intent;
@@ -9,17 +7,13 @@ import android.net.Uri;
import android.util.Log;
import com.cege.games.release.MainActivity;
-import com.cege.games.release.MainApplication;
import com.cege.games.release.ui.UIManager;
-import com.cege.games.release.webpage.events.CallJSEvent;
import com.cege.games.release.webpage.events.ProxyCBEvent;
import com.google.common.base.Strings;
import com.jc.jcfw.google.PayClient;
-import com.jc.jcfw.util.ThreadUtils;
import com.jc.jcfw.util.UIUtils;
import com.unity3d.player.UnityPlayer;
-import org.cocos2dx.lib.CocosJSHelper;
import org.greenrobot.eventbus.EventBus;
import org.json.JSONException;
import org.json.JSONObject;
@@ -36,27 +30,11 @@ public class JcSDK {
@SuppressLint("StaticFieldLeak")
private static PayClient payClient;
- private static native int runJS(final String funId, final String methodName, final String[] params);
-
- public static native String decryptPass(final String account, final String pass);
-
- public static native void tick(float dt);
-
public static void initCommonCB(UnityCallback callBack) {
Log.i(TAG, "call init common callback from unity");
commonCB = callBack;
}
- /**
- * @Deprecated
- * 不使用该方法, 直接由unity调用cpp方法
- * @param password
- */
- public static void initWallet(String password) {
- Log.i(TAG, "call init wallet from unity with password: " + password);
- CocosJSHelper.initWallet(password);
- commonCB.nativeCallback("", "wallet init success", 0);
- }
/**
* 回调至c#
@@ -100,47 +78,12 @@ public class JcSDK {
UIUtils.showQRCode(MainActivity.app, content, "");
}
- public static void showWebPage(String funid, String url) {
- MainActivity.app.showPage(funid, url);
- }
public static void scanQRCode(String funid, String title) {
// MainActivity.app.showQRScan(funid, title);
UIManager.getSingleton().showQRScan(funid, title);
}
- public static void signWithTiktok(String funid) {
- MainActivity.app.signWithTiktok(funid);
- }
-
- public static void signWithFacebook(String funid) {
- MainActivity.app.signWithFacebook(funid);
- }
-
- public static void shareWithFacebook(String content) {
- MainActivity.app.shareWithFacebook(content);
- }
-
- public static void signWithTwitter(String funid) {
- MainActivity.app.signWithTwitter(funid);
- }
-
- public static void signWithGoogle(String funid) {
- MainActivity.app.signWithGoogle(funid);
- }
-
- public static void signWithApple(String funid) {
-// MainActivity.app.signWithApple(funid);
- }
-
- public static void signWithOAuth(String funid, String jsonData) {
- MainActivity.app.oauthLogin(funid, jsonData);
- }
-
- public static void signOutGoogle(String funid) {
- MainActivity.app.signOutGoogle(funid);
- }
-
public static void logEvent(String content) {
MainActivity.app.logEvent(content);
}
@@ -176,63 +119,16 @@ public class JcSDK {
payClient.queryPurchase(funid);
}
- public static void passStorageState(String funid, String account) {
- Log.i(TAG, "passStorageState with: " + account);
- MainActivity.app.passStorageState(funid, account);
- }
-
- public static void storagePass(String funid, String account, String password) {
- MainActivity.app.storagePass(funid, account, password);
- }
-
- public static void authGetStoragePass(String funid, String account) {
- MainActivity.app.authGetStoragePass(funid, account);
- }
-
- public static void storageGameData(String data) {
- MainApplication.application.setGameData(data);
- }
-
- public static void getClientId(String funid) {
- Log.i(TAG, "getClientId ");
- MainActivity.app.getClientId(funid);
- }
-
public static void onProxyCB(String funId, String data) {
EventBus.getDefault().post(new ProxyCBEvent(funId, data));
}
public static void nativeCb(String funId, String error, String dataStr) {
- JSONObject result = new JSONObject();
- try {
- if (Strings.isNullOrEmpty(error)) {
- result.put("errcode", 0);
- result.put("data", dataStr);
- } else {
- result.put("errcode", 1);
- result.put("errmessage", error);
- }
- } catch (JSONException e) {
- Log.e(TAG, "JSONException: " + e.getMessage());
- }
- if (funId == null || funId.isEmpty()) {
- funId = MainActivity.app.getFunId();
- }
- Log.i(TAG, String.format("%s native cb, error: %s, data: %s", funId, error, dataStr));
- if (funId.startsWith(FUNID_PREFIX)) {
- EventBus.getDefault().post(new CallJSEvent(funId, result.toString()));
- } else {
- String finalFunId = funId;
- ThreadUtils.runInMain(() -> JcSDK.runJS(finalFunId, "jniCallback", new String[]{result.toString()}));
- }
- }
-
- public static void callNativeJS(String funId, String methodName, String[] params) {
- ThreadUtils.runInMain(() -> JcSDK.runJS(funId, methodName, params));
+ toUnity(funId, error, dataStr);
}
public static void nativeCb(NativeResult result) {
- nativeCb(result.getFunid(), result.getError(), result.getDataStr());
+ toUnity(result.getFunid(), result.getError(), result.getDataStr());
}
public static void toUnity(String funId, String error, String dataStr) {
diff --git a/settings.gradle b/settings.gradle
index da113be..57db7e5 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,8 +1,6 @@
apply from: "config.gradle"
include ':app'
rootProject.name = "HeadlessCocos"
-include ':libcocos2dx'
-project(':libcocos2dx').projectDir = new File(ext.cfgs.cocos2dxBasePath + '/cocos/platform/android/libcocos2dx')
include ':UnityDataAssetPack'
project(':UnityDataAssetPack').projectDir = new File(ext.cfgs.unityAndroidProject + '/UnityDataAssetPack')