修复稳定
This commit is contained in:
@@ -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() {
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user