client_Hale
2019-10-21 2b82cd974370d2d5ee9ccc6befa233290ccff85c
update 安卓系统 10
4个文件已修改
2个文件已添加
270 ■■■■■ 已修改文件
Project/ky_sdk/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Project/ky_sdk/src/game_ky/java/com/secondworld/univeralsdk/H2EngineSDK.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Project/ky_sdk/src/main/AndroidManifest.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/AppPermissionUtil.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/RequestPermissionsHelpActivity.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Project/ky_sdk/build.gradle
@@ -5,8 +5,8 @@
    defaultConfig {
        //applicationId "com.secondworld.univeralsdk"
        minSdkVersion 22
        targetSdkVersion 22
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.1.0"
    }
Project/ky_sdk/src/game_ky/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -1,5 +1,6 @@
package com.secondworld.univeralsdk;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ClipData;
@@ -411,6 +412,23 @@
    public static void onCreate(Activity activity, Bundle savedInstanceState)
    {
        AppPermissionUtil.requestPermissions(activity,
                                             new String[]{
                                                     Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                                     Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                                     Manifest.permission.RECORD_AUDIO,
                                                     Manifest.permission.READ_PHONE_STATE
                                             },new AppPermissionUtil.OnPermissionListener() {
                    @Override
                    public void onPermissionGranted() {
                        //授权
                    }
                    @Override
                    public void onPermissionDenied() {
                        //没有授权,或者有一个权限没有授权
                    }
                });
        // ------------------------------- 猫耳SDK -------------------------------
        KYPlatformUtil.getInstance().init(activity);
Project/ky_sdk/src/main/AndroidManifest.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.secondworld.univeralsdk"
    xmlns:tools="http://schemas.android.com/tools"
    android:installLocation="auto"
    android:versionCode="1"
    android:versionName="1.1.0">
@@ -71,6 +72,7 @@
            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            tools:replace="android:configChanges"
            android:screenOrientation="sensorLandscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
@@ -171,6 +173,12 @@
            </intent-filter>
        </receiver>
        <activity
            android:name="com.secondworld.univeralsdk.RequestPermissionsHelpActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:theme="@android:style/Theme.NoTitleBar">
        </activity>
        <!-- Required SDK核心功能-->
        <activity
            android:name="cn.jpush.android.ui.PushActivity"
Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/AppPermissionUtil.java
New file
@@ -0,0 +1,38 @@
package com.secondworld.univeralsdk;
import android.content.Context;
import android.os.Build;
/**
 * Created by Administrator on 2019/10/20 0020.
 */
public class AppPermissionUtil
{
    /**
     * 去请求所有权限
     * @param context
     * @param permissions 需要请求的权限列表
     * @param listener 请求权限回调
     */
    public static void requestPermissions(Context context, String[] permissions, OnPermissionListener listener) {
        if(context==null||listener==null){
            throw new NullPointerException("context参数为空,或者listener参数为空");
        }
        if (Build.VERSION.SDK_INT <= 22) {
            //SDK小于22之前的版本之前发返回权限允许
            listener.onPermissionGranted();
        } else {
            //打开一个一像素的activity去请求权限,并回调返回结果
            RequestPermissionsHelpActivity.start(context,permissions,listener);
        }
    }
    public interface OnPermissionListener {
        void onPermissionGranted();//授权
        void onPermissionDenied();//拒绝
    }
}
Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
@@ -10,13 +10,20 @@
import android.os.Bundle;
import android.os.Process;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.PermissionChecker;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.view.KeyEvent;
import com.unity3d.player.UnityPlayerActivity;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends UnityPlayerActivity
{
@@ -215,6 +222,6 @@
        {
            KYPlatformUtil.getInstance().logout();
        }
        return super.onKeyDown(i, keyEvent);
        return false;
    }
}
Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/RequestPermissionsHelpActivity.java
New file
@@ -0,0 +1,193 @@
package com.secondworld.univeralsdk;
import android.app.Activity;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
 * Created by Administrator on 2019/10/20 0020.
 */
public class RequestPermissionsHelpActivity extends Activity
{
    private int requestCode;
    //设计两个OnPermissionListener的原因是,有效缓解并发请求权限时,OnPermissionListener公用一个会引发回调错乱或没法回调的问题
    private static AppPermissionUtil.OnPermissionListener transferOnPermissionListener;//这个静态变量充当一个传递者的角色,传递给mOnPermissionListener变量后,就释放引用了
    private AppPermissionUtil.OnPermissionListener mOnPermissionListener;//这个才是我们每次权限请求使用的回调监听
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //1像素的activity
        Window window = getWindow();
        window.setGravity(Gravity.LEFT | Gravity.TOP);
        WindowManager.LayoutParams params = window.getAttributes();
        params.x = 0;
        params.y = 0;
        params.height = 1;
        params.width = 1;
        window.setAttributes(params);
        //获取界面传过来的值
        getIntentData();
    }
    private void getIntentData()
    {
        //获取传递过来回调监听
        mOnPermissionListener = transferOnPermissionListener;
        transferOnPermissionListener = null;
        //传过来的需要申请的权限
        String[] permissions = getIntent().getStringArrayExtra("permissions");
        if (permissions != null && permissions.length > 0)
        {
            requestPermissions(permissions);
        }
        else
        {
            //手动报错提示
            throw new NullPointerException("申请的权限列表不能为空!");
        }
    }
    /**
     * 去申请所有权限
     *
     * @param permissions
     */
    @TargetApi(Build.VERSION_CODES.M)
    private void requestPermissions(String[] permissions)
    {
        Random random = new Random();
        requestCode = random.nextInt(1000);
        List<String> deniedPermissions = getDeniedPermissions(permissions);
        if (deniedPermissions.size() > 0)
        {
            //没有授权过,去申请一下
            requestPermissions(deniedPermissions.toArray(new String[deniedPermissions.size()]),
                               requestCode);
        }
        else
        {
            //都已经授权过了
            if (mOnPermissionListener != null)
            {
                mOnPermissionListener.onPermissionGranted();
            }
            if (!isFinishing())
            {
                finish();
            }
        }
    }
    /**
     * 请求权限结果
     */
    public void requestPermissionsResult(int requestCode, int[] grantResults)
    {
        if (requestCode != -1 && requestCode == requestCode)
        {
            if (verifyPermissions(grantResults))
            {
                //都授权了
                if (mOnPermissionListener != null)
                {
                    mOnPermissionListener.onPermissionGranted();
                }
                finish();
            }
            else
            {
                //有一个未授权或者多个未授权
                if (mOnPermissionListener != null)
                {
                    mOnPermissionListener.onPermissionDenied();
                }
                finish();
            }
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults)
    {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //申请权限结果返回
        requestPermissionsResult(requestCode, grantResults);
    }
    /**
     * 获取请求权限中需要授权的权限,有的可能已经授权过了
     */
    private List<String> getDeniedPermissions(String[] permissions)
    {
        List<String> deniedPermissions = new ArrayList<>();
        for (String permission : permissions)
        {
            if (ContextCompat.checkSelfPermission(this,
                                                  permission) == PackageManager.PERMISSION_DENIED)
            {
                deniedPermissions.add(permission);
            }
        }
        return deniedPermissions;
    }
    /**
     * 验证所有权限是否都已经授权
     */
    private static boolean verifyPermissions(int[] grantResults)
    {
        for (int grantResult : grantResults)
        {
            if (grantResult != PackageManager.PERMISSION_GRANTED)
            {
                return false;
            }
        }
        return true;
    }
    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        mOnPermissionListener = null;
    }
    /**
     * 启动activity,并带些必要参数过来
     *
     * @param context
     * @param permissions 申请权限列表
     * @param listener    结果回调
     */
    public static void start(Context context, String[] permissions,
                             AppPermissionUtil.OnPermissionListener listener)
    {
        Intent intent = new Intent(context, RequestPermissionsHelpActivity.class);
        intent.putExtra("permissions", permissions);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
        transferOnPermissionListener = listener;
    }
}