修复稳定

This commit is contained in:
2026-03-02 17:32:23 +08:00
parent 49fe75efff
commit bfa7d324ee
469 changed files with 728 additions and 602 deletions

View File

@@ -31,13 +31,10 @@ import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import android.Manifest;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.*;
import android.provider.Settings;
import android.util.Log;
import com.jxkh.queyi.common.MainActivityHolder;
@@ -49,8 +46,6 @@ import com.tencent.map.geolocation.TencentLocationRequest;
public class AppActivity extends Cocos2dxActivity implements TencentLocationListener {
private static final int REQUEST_LOCATION_PERMISSION = 1001;
private static final int REQUEST_PHONE_STATE_PERMISSION = 1002;
private static final int REQUEST_APP_SETTINGS = 1003;
private Handler mHandler;
private HandlerThread mThread;
@@ -90,21 +85,15 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
mThread.start();
mHandler = new Handler(mThread.getLooper());
// v7.4.6+ 隐私合规: 必须在 getInstance 前调用, 否则 requestLocationUpdates 返回错误码4
TencentLocationManager.setUserAgreePrivacy(true);
mLocationManager = TencentLocationManager.getInstance(this);
// 设置坐标系为 gcj-02, 缺省坐标为 gcj-02, 所以通常不必进行如下调用
mLocationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02);
// 启动时请求设备信息权限(防作弊必需)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{
Manifest.permission.READ_PHONE_STATE
}, REQUEST_PHONE_STATE_PERMISSION);
} else {
// 设备权限已有,继续请求定位权限
requestLocationPermissionIfNeeded();
}
}
// 启动时请求定位权限
requestLocationPermissionIfNeeded();
}
@Override
@@ -149,6 +138,7 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.w("Location:", "permission NOT granted, requesting...");
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
@@ -156,6 +146,7 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
return;
}
}
Log.d("Location:", "permission granted, calling doStartLocation");
doStartLocation();
}
@@ -171,7 +162,9 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
@Override
public void run() {
mLocationManager.requestLocationUpdates(request, AppActivity.this);
int err = mLocationManager.requestLocationUpdates(request, AppActivity.this);
Log.d("Location:", "requestLocationUpdates result=" + err
+ " (0=OK, 1=NoKey, 2=NoPermission, 3=GpsOff)");
}
});
@@ -182,22 +175,7 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_PHONE_STATE_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 设备信息权限已授予,继续请求定位权限
requestLocationPermissionIfNeeded();
} else {
// 检查是否选了"不再询问"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !shouldShowRequestPermissionRationale(Manifest.permission.READ_PHONE_STATE)) {
// 用户选了"不再询问",引导去设置页
showGoSettingsDialog();
} else {
// 用户只是拒绝了,弹窗解释后重新请求
showPhoneStateRequiredDialog();
}
}
} else if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
doStartLocation();
} else {
@@ -224,82 +202,6 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
}
}
private void showPhoneStateRequiredDialog() {
runOnUiThread(new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(AppActivity.this)
.setTitle("权限申请")
.setMessage("为保障游戏公平性和防止作弊,需要获取设备信息。请授予该权限后继续使用。")
.setCancelable(false)
.setPositiveButton("授予权限", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.READ_PHONE_STATE
}, REQUEST_PHONE_STATE_PERMISSION);
}
}
})
.setNegativeButton("退出游戏", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
})
.show();
}
});
}
private void showGoSettingsDialog() {
runOnUiThread(new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(AppActivity.this)
.setTitle("权限申请")
.setMessage("设备信息权限是游戏运行的必要条件(防作弊)。请前往系统设置手动开启该权限。")
.setCancelable(false)
.setPositiveButton("前往设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_APP_SETTINGS);
}
})
.setNegativeButton("退出游戏", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
})
.show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_APP_SETTINGS) {
// 从设置页返回,重新检查权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
requestLocationPermissionIfNeeded();
} else {
// 仍未授权,再次提示
showGoSettingsDialog();
}
}
}
}
public void clearStatus() {
}

View File

@@ -48,7 +48,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
//public static final String AppSecret = "85dda78b3fdf3cb6619526fabf089863";
// IWXAPI 鏄涓夋柟app鍜屽井淇¢<EFBFBD>氫俊鐨刼penapi鎺ュ彛
// IWXAPI 是第三方app和微信通信的openapi接口
private static IWXAPI api;
private static final int SceneSession = 0;
@@ -72,9 +72,9 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
Intent intent = getIntent();
// 閫氳繃WXAPIFactory宸ュ巶锛岃幏鍙朓WXAPI鐨勫疄渚<EFBFBD>
// 通过WXAPIFactory工厂获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this,APP_ID, true);
// 灏嗚app娉ㄥ唽鍒板井淇<EFBFBD>
// 将该app注册到微信
api.registerApp(APP_ID);
api.handleIntent(intent, this);
@@ -136,14 +136,22 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
if (!file.exists())
{
Log.d(Tag,"reqShare file not exists:"+ImgPath);
finish();
return;
}
Bitmap bmp = BitmapFactory.decodeFile(ImgPath);
if (bmp == null) {
Log.e(Tag, "reqShare decode bitmap failed: " + ImgPath);
finish();
return;
}
// 璁$畻缂╂斁姣斾緥
// 计算缩放比例
int scaleWidth = (int)(bmp.getWidth() * 0.5);
int scaleHeight = (int)(bmp.getHeight() * 0.5);
if (scaleWidth <= 0) scaleWidth = 1;
if (scaleHeight <= 0) scaleHeight = 1;
Bitmap newBmp = Bitmap.createScaledBitmap(bmp, scaleWidth, scaleHeight, true);
WXImageObject imgObj = new WXImageObject(newBmp);
@@ -257,7 +265,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
Log.d(Tag,"reqShareTxtCB Ok:"+text);
}
// 寰俊鍙戦<EFBFBD>佽姹傚埌绗笁鏂瑰簲鐢ㄦ椂锛屼細鍥炶皟鍒拌鏂规硶
// 微信发送请求到第三方应用时,会回调到该方法
@Override
public void onReq(BaseReq req)
{
@@ -277,7 +285,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
Log.d(Tag,"onReq:"+req.getType());
}
// 绗笁鏂瑰簲鐢ㄥ彂閫佸埌寰俊鐨勮姹傚鐞嗗悗鐨勫搷搴旂粨鏋滐紝浼氬洖璋冨埌璇ユ柟娉<EFBFBD>
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
@Override
public void onResp(BaseResp resp) {