背景和头像缺失

This commit is contained in:
2026-03-01 13:48:24 +08:00
parent 9ae4e8e614
commit eaaf7f8c9b
554 changed files with 1871 additions and 1718 deletions

View File

@@ -30,9 +30,14 @@ package com.jxkh.queyi;
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;
@@ -43,6 +48,9 @@ import com.tencent.map.geolocation.TencentLocationManager;
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;
@@ -85,6 +93,18 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
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();
}
}
}
@Override
@@ -125,7 +145,21 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
// 响应点击"开始"
public void startLocation() {
// Android 6.0+ 需要运行时权限
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) {
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
}, REQUEST_LOCATION_PERMISSION);
return;
}
}
doStartLocation();
}
private void doStartLocation() {
// 创建定位请求
final TencentLocationRequest request = TencentLocationRequest.create();
@@ -144,6 +178,128 @@ public class AppActivity extends Cocos2dxActivity implements TencentLocationList
updateLocationStatus("开始定位: " + request);
}
@Override
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 (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
doStartLocation();
} else {
Log.w("AppActivity", "Location permission denied");
Native.strLocation = "{ret:false, reason: \"PERMISSION_DENIED\" }";
Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {
public void run() {
Native.onLocationChanged(Native.strLocation);
}
});
}
}
}
private void requestLocationPermissionIfNeeded() {
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) {
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
}, REQUEST_LOCATION_PERMISSION);
}
}
}
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

@@ -216,4 +216,14 @@ public class Native extends Cocos2dxHelper
public static double distanceBetween(double aLatitude, double aLongitude, double bLatitude, double bLongitude) {
return TencentLocationUtils.distanceBetween(aLatitude, aLongitude, bLatitude, bLongitude);
}
// GBK byte array -> Java String (internally UTF-16), JNI GetStringUTFChars returns UTF-8
public static String convertGbkToUtf8(byte[] gbkBytes) {
try {
return new String(gbkBytes, "GBK");
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}

View File

@@ -126,8 +126,9 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "carjob_wx_login";
WXEntryActivity.api.sendReq(req);
Log.d(Tag,"reqLogin!!!!");
boolean result = WXEntryActivity.api.sendReq(req);
Log.d(Tag,"reqLogin result: " + result); // 添加日志
Log.d(Tag,"isWXAppInstalled: " + api.isWXAppInstalled()); // 检查微信是否安装
}
public void reqShareImg(String ImgPath,int nType)
{