背景和头像缺失
This commit is contained in:
@@ -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() {
|
||||
}
|
||||
|
||||
|
||||
@@ -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 "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user