From 2b82cd974370d2d5ee9ccc6befa233290ccff85c Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 21 十月 2019 11:29:24 +0800
Subject: [PATCH] update 安卓系统 10

---
 Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/AppPermissionUtil.java              |   38 +++++++
 Project/ky_sdk/build.gradle                                                                  |    4 
 Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java                   |    9 +
 Project/ky_sdk/src/game_ky/java/com/secondworld/univeralsdk/H2EngineSDK.java                 |   18 +++
 Project/ky_sdk/src/main/AndroidManifest.xml                                                  |    8 +
 Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/RequestPermissionsHelpActivity.java |  193 ++++++++++++++++++++++++++++++++++++++
 6 files changed, 267 insertions(+), 3 deletions(-)

diff --git a/Project/ky_sdk/build.gradle b/Project/ky_sdk/build.gradle
index febd0b9..889851f 100644
--- a/Project/ky_sdk/build.gradle
+++ b/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"
     }
diff --git a/Project/ky_sdk/src/game_ky/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/ky_sdk/src/game_ky/java/com/secondworld/univeralsdk/H2EngineSDK.java
index 216df47..69323fd 100644
--- a/Project/ky_sdk/src/game_ky/java/com/secondworld/univeralsdk/H2EngineSDK.java
+++ b/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() {
+                        //娌℃湁鎺堟潈锛屾垨鑰呮湁涓�涓潈闄愭病鏈夋巿鏉�
+                    }
+                });
         // ------------------------------- 鐚�砈DK -------------------------------
         KYPlatformUtil.getInstance().init(activity);
 
diff --git a/Project/ky_sdk/src/main/AndroidManifest.xml b/Project/ky_sdk/src/main/AndroidManifest.xml
index 6937799..ea75678 100644
--- a/Project/ky_sdk/src/main/AndroidManifest.xml
+++ b/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"
diff --git a/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/AppPermissionUtil.java b/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/AppPermissionUtil.java
new file mode 100644
index 0000000..3c73672
--- /dev/null
+++ b/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/AppPermissionUtil.java
@@ -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鍙傛暟涓虹┖锛屾垨鑰卨istener鍙傛暟涓虹┖");
+        }
+
+        if (Build.VERSION.SDK_INT <= 22) {
+            //SDK灏忎簬22涔嬪墠鐨勭増鏈箣鍓嶅彂杩斿洖鏉冮檺鍏佽
+            listener.onPermissionGranted();
+        } else {
+            //鎵撳紑涓�涓竴鍍忕礌鐨刟ctivity鍘昏姹傛潈闄愶紝骞跺洖璋冭繑鍥炵粨鏋�
+            RequestPermissionsHelpActivity.start(context,permissions,listener);
+        }
+    }
+
+    public interface OnPermissionListener {
+
+        void onPermissionGranted();//鎺堟潈
+
+        void onPermissionDenied();//鎷掔粷
+    }
+}
diff --git a/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java b/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
index 50c4c25..a1a6fe3 100644
--- a/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
+++ b/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;
     }
 }
diff --git a/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/RequestPermissionsHelpActivity.java b/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/RequestPermissionsHelpActivity.java
new file mode 100644
index 0000000..6fb2089
--- /dev/null
+++ b/Project/ky_sdk/src/main/java/com/secondworld/univeralsdk/RequestPermissionsHelpActivity.java
@@ -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鐨勫師鍥犳槸锛屾湁鏁堢紦瑙e苟鍙戣姹傛潈闄愭椂锛孫nPermissionListener鍏敤涓�涓細寮曞彂鍥炶皟閿欎贡鎴栨病娉曞洖璋冪殑闂
+    private static AppPermissionUtil.OnPermissionListener transferOnPermissionListener;//杩欎釜闈欐�佸彉閲忓厖褰撲竴涓紶閫掕�呯殑瑙掕壊,浼犻�掔粰mOnPermissionListener鍙橀噺鍚庯紝灏遍噴鏀惧紩鐢ㄤ簡
+
+    private AppPermissionUtil.OnPermissionListener mOnPermissionListener;//杩欎釜鎵嶆槸鎴戜滑姣忔鏉冮檺璇锋眰浣跨敤鐨勫洖璋冪洃鍚�
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+        //1鍍忕礌鐨刟ctivity
+        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;
+    }
+}

--
Gitblit v1.8.0