当前位置:上海天天彩4开奖结果 >  域名 >  正文 > 网赌欠了很多钱怎么办

  交易 任务 SEO服务 站长团购 联盟

但王珙却不同,他是堂堂的左相,政事堂相国,已经位极人臣,他不需要再眼巴巴地跑去,找某个高官恳谈,只有人家找他的份,因此王珙不慌不忙,悠闲地吃了午饭,又准备去书房小睡片刻,这是他雷打不动的规矩,刚到书房,一名丫鬟便跑来禀报,“老爷,夫人有请”

微信红包群群规制作

“好啊?!绷躔┪匏降牡懔说阃?,这个叫做拉琪的女人挺聪明的,比起只懂得横冲直撞虽然对自己的实力有自信是好事但却完全就是自负的瓦夷帕识大体多了,知道单凭自身无法解决的时候拉拢是最好的,敌人的敌人就是朋友这句话她还是懂的。
一道血喷泉似的喷溅而出,那鬼子军曹来不及喊叫一声,身子便软绵绵的倒在地上,后面跟着的那三个鬼子兵也来不及做出反应,就被喻站长和“野狼”用首和刺刀给解决了,整个过程干脆利索,绝不拖泥带水,没发出来一丝声响,干得漂亮到位。

红衣眼皮都眨眼一下,一根玉指弹出去,似慢实快给人一种强烈的视觉矛盾冲击,一道血色雷光从她的指端射出,直接将一头皇级魔兽整个身体贯穿了。

Unity如何管理住Android 6.0 调皮的权限


  前天我们项目有这么个需求,台湾版本由于要上谷歌Play要求安卓系统6.0以上的动态申请权限,对于一个做Unity的来说,是不是有点懵逼,这我该何去何从呢?我想静静,静静的想一想,权限也不就那么点事吗?这算是事吗?这都不是事,遇到问题,不要急着去解决,这里不是不解决,是不要着急为了解决而解决!软件工程告诉我们需求分析才是第一位的,大学都觉的软件工程是很扯淡的课,其实不然,它是灰常重要的,灰常重要,灰常重要?。?!重要的事情说三变。再复习下软件工程的几个步骤:需求分析->概要设计->详细设计->码代码->测试->维护!上课基本听老师扯淡了,大致是这么个流程?。?!

Q1:我怎么知道的APK到底有多少个权限?
A1:这里我要引用我们策划经常说的一句话了,“小伙子,这个问题问的好!”。作为一个懂开发的猿,这个要是不知道,我也不知道该不该说你了。。。AndroidManifest.xml这个你眼熟吧?不错,是你是你就是你??!


Q2:这些权限看到是看到了,我怎么和他们交个朋友了,熟悉了好办事???
A2:注意,首先你是一个会写代码的猿,看懂代码对你来说是事吗?其实我也是现学的,没做过安卓开发,既然都是小白,那还怕什么,有人是不是在静静的看着楼主装X。。。
  1 如何获取呢,请睁大你的双眼,这里是部分代码,稍后完整的工程会全部奉上?。?!

final Bundle bundle = getArguments();
final String[] permissions = bundle.getStringArray(PERMISSIONS); if (permissions != null) { Collections.addAll(requestedPermissions, permissions); allPermissions = permissions; }

轻轻松松拿到了我们想要的一切权限,是不是So Easy!

拿到了权限我们该怎么处理呢?目前需求是这样的,APK必须的权限都已授权,OK,结束!否则用户不想授予某个权限,例如读取你的联系人之类的,那就没办法了,应用关闭,结束!我感觉这么处理有点太直接了,说不定一个潜在的金主爸爸就这么流失了,我们是不是可以这样,既然拿到权限列表了,最笨的方法也是最有效的,我逐个检测是否授权不就得了,未授权,我给你弹个获取权限的框,说不定,用户一想,授权这也没什么啊,即使读取隐私,也是光明正大的了!那么读取联系人的权限就拿到了,下一个权限。。。权限列表请求一遍了,发现还有未授权的,那就真的GG了,此时不能再弹框申请权限了,用户会烦的,一位哪个傻逼写了个死循环呢!所以这是没办法了,要么此时来个温馨提示,由于您未授权读取联系人,部分功能无法启动,请打开权限后再次使用,谢谢!
我们接下来要做的就是拿到权限列表了,如何动态请求权限呢?

   public static void AskPermissions(final String gameObject, final int requestCode, final String[] permissions) {
        UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                final Bundle bundle = new Bundle();
                bundle.putString(GAME_OBJECT, gameObject);
                bundle.putInt(REQUEST_CODE, requestCode);
                bundle.putStringArray(PERMISSIONS, permissions);
                final PermissionProvider fragment = new PermissionProvider();
                fragment.setArguments(bundle);
                UnityPlayer.currentActivity
                        .getFragmentManager()
                        .beginTransaction()
                        .add(fragment, PermissionProvider.class.getCanonicalName())
                        .commit();
            }
        });
    }

? /**
???? * Once user allow or deny permissions this method is called
???? */
??? @Override
??? public void onRequestPermissionsResult(final int requestCode, final String[] permissions, final int[] grantResults) {
??????? LogExtensions.v(TAG, "[onRequestPermissionsResult] " + requestCode + " | " + Arrays.toString(permissions) + " | " + Arrays.toString(grantResults));

??????? if (requestCode == this.requestCode) {
??????????? boolean result = true;
??????????? for (int i : grantResults) {
??????????????? if (i != PackageManager.PERMISSION_GRANTED) {
??????????????????? result = false;
??????????????????? break;
??????????????? }
??????????? }
       //权限请求后的回调,告诉Unity我是否被授权了
??????????? onComplete(gameObject, requestCode, result);
??????? }
??????? super.onRequestPermissionsResult(requestCode, permissions, grantResults);
??? }

?在Unity那边我只要记录一个权限列表的字典,被授权的在回掉中从自字典中删除该权限,到最后检测该字典的Count是否大于0即可,授权后且字典的Count大于0,第一轮的逐个权限请求还未结束,继续。直到权限全部授权结束!这是我们期望的结果,第二种结果是,其中一个用户未授权,那么gg了,弹框提示,退出应用,一首凉凉送给自己!

using UnityEngine;
using System.Collections;
using System;
using Platform.Android.Stubs;

namespace Platform.Android
{
	public class PermissionProvider : MonoBehaviour
	{

		public static event Action<bool> OnReceiveStoragePermission;
		#if UNITY_ANDROID
		private AndroidJavaClass _request;
		public  AndroidJavaClass Request { 
			get { 
				if (_request == null)
					_request = new AndroidJavaClass ("com.example.androidpermissionmgr.PermissionProvider");
				return _request;
			} 
		}
		#else
		
		public AndroidJavaClassStub Request = new AndroidJavaClassStub ();
		
		#endif

		public void VerifyStorage (Action<bool> action)
		{
			Debug.Log ("[PermissionProvider] VerifyStorage" );
			OnReceiveStoragePermission += action;
			RequestPermissions (1001, "android.permission.READ_EXTERNAL_STORAGE", "android.permission.ACCESS_NETWORK_STATE");//android.permission.ACCESS_NETWORK_STATE  "android.permission.WRITE_EXTERNAL_STORAGE"

        }

        public void RequestPermissions (int requestCode, params string[]permissions)
		{
			Debug.Log ("[PermissionProvider] Requesting permissions: "+ requestCode + " " + permissions );
			Request.CallStatic ("verifyPermissions", gameObject.name, requestCode, permissions);
		}

		public void OnGranted (string requestCode)
		{
			Debug.Log("[PermissionProvider] OnGranted " + requestCode);
            Example.result = "[PermissionProvider] OnGranted " + requestCode;

            if (requestCode.Equals("1001"))
            {
                if (OnReceiveStoragePermission != null)
                    OnReceiveStoragePermission(true);
            }
			if (Example.permissionDic.ContainsValue(int.Parse(requestCode)))
			{
				foreach (var item in Example.permissionDic)
				{
					if (item.Value == int.Parse(requestCode))
					{
						Example.permissionDic.Remove(item.Key);
						break;
					}
				}
			}
			CheckPermissionAgain();
		}

		public void OnDenied (string requestCode)
		{
			Debug.Log("[PermissionProvider] OnDenied " + requestCode);
            Example.result += "[PermissionProvider] OnDenied " + requestCode;
            if (requestCode.Equals("1001"))
            {
                if (OnReceiveStoragePermission != null)
                    OnReceiveStoragePermission(false);
            }
			//只要有一个重要权限未授权直接退出,或者再次请求权限
			if (Example.permissionDic.Count>0)
			{
				Application.Quit();
			}
		}

        public void AskForPermission()
        {
            RequestPermissions(100, "android.permission.READ_CONTACTS");//android.permission.ACCESS_NETWORK_STATE  "android.permission.WRITE_EXTERNAL_STORAGE"

            Example.result += "AskForPermission";
        }

		public void GetNoGrantPermission()
		{
			Request.Call("GetNoGrantPermission");
		}

		public void AskForAllPermission()
		{
			foreach (var item in Example.permissionDic)
			{
				RequestPermissions(item.Value, item.Key);
			}
		}

		public void CheckPermissionAgain()
		{
			if (Example.permissionDic.Count > 0)
			{
				AskForAllPermission();
			}
			else
			{
				Example.result = "APK已全部授权成功!";
			}
		}
	}
}

?由于写的比较粗糙,基本功能是实现了!大家有问题了可以@我,共同学习?。?!
?不知不觉又凌晨了,明天要继续上班,碎觉了,做一只按时睡觉的猿?。?!

截图

?

工程地址:https://gitee.com/wuzhang/UnityAndroidPermissionProject.git

欢迎Fork和Star!

?

当前文章://www.rl-f1.com/yqlj/

发布时间:2018-12-19 12:11:41

挂机赚钱每天10元 微粒赚登陆 跑滴滴能挣钱吗 土财主挂机赚钱软件 电脑可以赚钱的方法 电脑流量赚钱 学生赚-手机赚钱电脑 电脑挖矿赚钱平台

编辑:陵纯

    文章推荐

    分类排行榜

    专栏文章

    更多>

    服务推荐

    上海天天彩4开奖结果
    快乐赚怎么提现 扫一扫关注最新创业资讯