zoukankan      html  css  js  c++  java
  • Unity和android之间的通信(adt方式)

    一 Unity调用Andorid方法

     1.1 这里介绍俩种方法,第一种是直接调用currentActivity,就是当前的Activity。

         Unity代码:

               

    /*******************
     *  Title:介入android sdk介入
     *  Author:CW
     *  ScriptName:   SDKForAndrodTest
     *  Des:
     ******************/
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    public class SDKForAndrodTest : MonoBehaviour 
    {
    
        private AndroidJavaClass jc = null;
        private AndroidJavaObject jo = null;
    
        void Awake()
        {
            Debug.Log("这里是Unity的Awake");
            //得到android里面的类
            jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            //得到当前的Anorid的Activity对象
            jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
           
        }
        void OnGUI()
        {
            if(GUI.Button(new Rect(0,0,100,100),""))
            {
                if(jo!=null)
                {
                    //test是android里面的方法名称
                    jo.Call("test", "这是来自Unity的消息");
                }
            }
        }
    }
    

       android里面的代码:

         新建一个GameMainActivity类继承UnityPlayerActivity,并且重写onCreate方法。

    package com.CW.AndroidSDK;
    
    import com.unity3d.player.UnityPlayer;
    
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.text.style.SuperscriptSpan;
    import android.util.Log;
    import android.view.Window;
    
    public class GameMainActivity  extends UnityPlayerActivity
    {
    	@Override protected void onCreate (Bundle savedInstanceState)
    	{
    	  super.onCreate(savedInstanceState);
    	}
           //这里是Untiy调用的方法
    	private void test(String s)
    	{
    		Log.i("unity", "unity 调用了 java 方法:"+s);
    	}
    }
    

      之后修改AndroidManifest文件,将当前的activity改成GameMainActivity

    2 第二种方法是直接调用自己新建的Activity方法(这种我在测试的时候好像只能调用android里面的静态方法)

      在adt里面新建一个包和一个类如下:

     SDKAPI里面写上Unity要调用的方法。

    package com.sdk.api;
    
    import android.R.integer;
    import android.util.Log;
    
    public class SDKAPI {
    
    	private static int test(String s)
    	{
    		Log.i("unity", "unity 调用了 java 方法:"+s);
    		return 0;
    	}
    }
    

    Unity里面的代码:

    /*******************
     *  Title:
     *  Author:CW
     *  ScriptName:   SDKForAndrodTest2
     *  Des:
     ******************/
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    public class SDKForAndrodTest2 : MonoBehaviour {
    
        private AndroidJavaClass jc = null;
    
    	// Use this for initialization
    	void Start () {
            //包名.类名
            jc = new AndroidJavaClass("com.sdk.api.SDKAPI");
            Debug.Log("这里是Unity的Awake");
    	}
    
        void OnGUI()
        {
            if (GUI.Button(new Rect(0, 0, 100, 100), ""))
            {
                if (jc != null)
                {
                    jc.CallStatic<int>("test", "这是来自Unity的消息");
                }
            }
        }
    
        private void CallBack(string str)
        {
            Debug.Log("这里是Android的回调:" + str);
        }
    }
    

     真机调试的时候都打印出出对应的log信息

    二 android里面调用Unity的方法

      这个很简单,调用UnityPlayer.UnitySendMessage方法就可以了,值得注意的是传参数的时候只能传一个字符串过去。

    package com.sdk.api;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import com.CW.AndroidSDK3.UnityPlayerActivity;
    import com.unity3d.player.UnityPlayer;
    
    import android.R.integer;
    import android.util.Log;
    
    public class SDKAPI {
    
    	private static int test(String s)
    	{
    		Log.i("unity", "unity 调用了 java 方法:"+s);
    		JSONObject jsonObject=new JSONObject();
    		try {
    			jsonObject.put("Key", "这是Android发送给Unity的消息");
    		} catch (JSONException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		//回调给Unity
    		//第一个参数是游戏物体的名称
    		//第二个参数是方法名
    		//第三个参数是发送的消息字符串
    		UnityPlayer.UnitySendMessage("SDKForAndrodTest", "CallBack", jsonObject.toString());
    		return 0;
    		
    	}
    }
    

     打印的Log的信息如下:

     三 编写框架实现SDK的接入

     1 Untiy端

    1.1 抽象出基类

    /*******************
     *  Title:SDK接入
     *  Author:CW
     *  ScriptName:   SDKBase
     *  Des:SDK基类
     ******************/
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    public class SDKBase
    {
        /// <summary>
        /// 初始化函数
        /// </summary>
        /// <param name="flag"></param>
        public virtual void Init(int flag=0) { }
        /// <summary>
        /// 登入
        /// </summary>
        public virtual void Login() {}
        /// <summary>
        /// 登出
        /// </summary>
        public virtual void Logout() { }
        /// <summary>
        /// 支付
        /// </summary>
        public virtual void Pay(int num,string orderId ) { }
        /// <summary>
        /// 游戏中心
        /// </summary>
        public virtual void GameCenter() { }
    
    }
    

     1.2 实现Android的SDK

    /*******************
     *  Title:三国无双案例
     *  Author:CW
     *  ScriptName:   SDKForAndroid
     *  Des:接入安卓SDK
     ******************/
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    public class SDKForAndroid:SDKBase 
    {
    #if UNITY_ANDROID && !UNITY_EDITOR
        private AndroidJavaClass _jc;
        public SDKForAndroid():base()
        {
            _jc = new AndroidJavaClass("com.sdk.SDKAPI.SDKAPI");
        }
        public override void Init(int flag = 0)
        {
           if(_jc!=null)
            {
                _jc.CallStatic("Init",flag);
                Debug.Log("初始化SDK");
            }
        }
    
       public override void Login()
       {
           if (_jc != null)
           {
               _jc.CallStatic("Login");
           }
       }
    
        public override void Logout()
        {
            if (_jc != null)
            {
                _jc.CallStatic("Logout");
            }
        }
    
        public override void Pay(int num,string orderId)
        {
            if (_jc != null)
            {
                _jc.CallStatic("Pay",num,orderId);
            }
        }
    
        public override void GameCenter()
        {
            if (_jc != null)
            {
                _jc.CallStatic("GameCenter");
            }
        }
    
    #endif
    }
    

     1.3管理这些SDK

    /*******************
     *  Title:SDK接入
     *  Author:CW
     *  ScriptName:   SDKMgr
     *  Des:SDK管理器
     ******************/
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    public class SDKMgr : MonoBehaviour 
    {
        /// <summary>
        /// 单利
        /// </summary>
        private static SDKMgr _instance;
        /// <summary>
        /// 得到实例
        /// </summary>
        public static SDKMgr Instance
        {
            get
            {
                if(_instance==null)
                {
                    GameObject tmpGo = new GameObject("SDKMgr");
                    _instance = tmpGo.AddComponent<SDKMgr>();
                }
                return _instance;
            }
        }
    
        private SDKBase _sdkAPI;
        void Awake()
        {
    #if UNITY_EDITOR
            _sdkAPI = new SDKBase();
    #elif UNITY_ANDROID
             Debug.Log("Awake");
            _sdkAPI = new SDKForAndroid();
    #endif
        }
    
        /// <summary>
        /// 初始化函数
        /// </summary>
        /// <param name="flag"></param>
        public  void Init(int flag = 0) 
        {
            _sdkAPI.Init(flag);
        }
        /// <summary>
        /// 登入
        /// </summary>
        public  void Login(LoginListener listener)
        {
            _currentListner = listener;
            _sdkAPI.Login();
        }
        /// <summary>
        /// 登出
        /// </summary>
        public  void Logout()
        {
            _sdkAPI.Logout();
        }
        /// <summary>
        /// 支付
        /// </summary>
        public  void Pay(PayData payData) 
        {
            CurrentPayData = payData;
            _sdkAPI.Pay(CurrentPayData.Num,CurrentPayData.OrderID);
        }
        /// <summary>
        /// 游戏中心
        /// </summary>
        public  void GameCenter()
        {
            _sdkAPI.GameCenter();
        }
    
    
        public PayData CurrentPayData;
        /// <summary>
        /// 支付数据
        /// </summary>
        public class PayData
        {
            /// <summary>
            /// 支付数量
            /// </summary>
            public int Num;
            /// <summary>
            /// 订单号
            /// </summary>
            public string OrderID;
    
            public PayData(int num,string orderId)
            {
                Num=num;
                OrderID=orderId;
            }
        }
        private LoginListener _currentListner;
        public interface LoginListener
        {
            void OnSucess(string uid);
            void OnFail();
            void OnCancel();
        }
    
        #region Android回调Unity
        private void LogicCallBack(string jsonObj)
        {
            if(string.IsNullOrEmpty(jsonObj))
            {
                if(_currentListner!=null)
                {
                    _currentListner.OnFail();
                }
                else
                {
                    Debug.LogError("_currentListner is null");
                }
            }
            else if(jsonObj.Equals("-1"))
            {
                if (_currentListner != null)
                {
                    _currentListner.OnCancel();
                }
                else
                {
                    Debug.LogError("_currentListner is null");
                }
            }
            else
            {
                if (_currentListner != null)
                {
                    _currentListner.OnSucess(jsonObj);
                }
                else
                {
                    Debug.LogError("_currentListner is null");
                }
            }
        }
        #endregion
    }
    

    1.4 Unity端的测试脚本

    /*******************
     *  Title:三国无双案例
     *  Author:CW
     *  ScriptName:   SDKTest
     *  Des:
     ******************/
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    public class SDKTest : MonoBehaviour {
    
    	
        void OnGUI()
        {
            if(GUI.Button(new Rect(0,0,100,50),"Init"))
            {
               SDKMgr.Instance.Init();
            }else if(GUI.Button(new Rect(0,60,100,50),"Login"))
            {
                SDKMgr.Instance.Login(new LoginCallBack());
            }
            else if (GUI.Button(new Rect(0, 120, 100, 50), "Logout"))
            {
                SDKMgr.Instance.Logout();
            }
            else if (GUI.Button(new Rect(0, 190, 100, 50), "Pay"))
            {
    
                SDKMgr.Instance.Pay(new SDKMgr.PayData(5,"测试订单ID"));
            }
            else if (GUI.Button(new Rect(0, 270, 100, 50), "GameCenter"))
            {
                SDKMgr.Instance.GameCenter();
            }
        }
    
        public class LoginCallBack:SDKMgr.LoginListener
        {
    
            public void OnSucess(string uid)
            {
                Debug.Log("登录成功:"+uid);   
            }
    
            public void OnFail()
            {
                Debug.Log("登录失败");   
            }
    
            public void OnCancel()
            {
                Debug.Log("取消登录");   
            }
        }
    }
    

     2 ADT方面的代码(以接入百度SDK为例,详细的接入百度SDK步骤可以看百度SDK的接入文档,这里只说明接入的流程)

       2.1 把untiy的工程导出Android工程(不会百度一下就出来了),然后创建出负责和adt通信的包和类名,并且导入百度SDK的库文件。我的目录结构如下:

      2.2将我们的项目去引用这个库文件

     

      2.3下面我们编写SDKAPI这个类,代码如下:

    package com.sdk.SDKAPI;
    
    import android.R.integer;
    
    import com.CW.AndroidSDK.MainActivity;
    
    /*这里的方法要和Unity里面的要对应
     * */
    public class SDKAPI {
    
    	/*
    	 * SDK初始化
    	 * */
        public static  void Init(int flag) 
        {
            MainActivity.myHandler.sendEmptyMessage(SDKUtility.E_SDKFunType.INIT.ordinal());
        }
        /*
         * 登入
         * */
        public static void Login()
        {
        	 MainActivity.myHandler.sendEmptyMessage(SDKUtility.E_SDKFunType.LOGIN.ordinal());
        }
        /*
         * 登出
         * */
        public static void Logout()
        {
        	 MainActivity.myHandler.sendEmptyMessage(SDKUtility.E_SDKFunType.LOGOUT.ordinal());
        }
        
        public static PayData currPayData;
       /*
        * 支付
        * */
        public static void Pay(int num,String orderId) 
        {
        	 currPayData=new PayData(num,orderId);
        	 MainActivity.myHandler.sendEmptyMessage(SDKUtility.E_SDKFunType.PAY.ordinal());
        }
       /*
        * 游戏中心
        * */
        public static void GameCenter()
        {
        	 MainActivity.myHandler.sendEmptyMessage(SDKUtility.E_SDKFunType.GAMECENTER.ordinal());
        }
        /*
         * 支付数据
         * */
        public static  class PayData
        {
        	/*金币分
        	 * */
        	public int num;
        	/*订单号
        	 * */
        	public String orderIdString;
        	
        	public PayData(int num,String orderId)
        	{
        		this.num=num;
        		this.orderIdString=orderId;
        	}
        }
    }
    

       2.4编写MainActivity,这个类必须继承UnityPlayerActivity并且重写onCreate方法。(这样做是百度SDK文档要求的)

      这个类主要的作用去调用百度SDK里面的库文件,所以有些方法是文档里面要求的。而我们的SDKAPI类就是去调用这个类里面的一些方法,从而实现交互,下面是这个类的主要代码:

    package com.CW.AndroidSDK;
    
    import java.util.UUID;
    
    import android.R.string;
    import android.app.Activity;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Looper;
    import android.os.Message;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.Window;
    import android.widget.Toast;
    
    import com.baidu.gamesdk.ActivityAdPage;
    import com.baidu.gamesdk.ActivityAdPage.Listener;
    import com.baidu.gamesdk.ActivityAnalytics;
    import com.baidu.gamesdk.BDGameSDK;
    import com.baidu.gamesdk.BDGameSDKSetting;
    import com.baidu.gamesdk.BDGameSDKSetting.Domain;
    import com.baidu.gamesdk.IResponse;
    import com.baidu.gamesdk.ResultCode;
    import com.baidu.platformsdk.PayOrderInfo;
    import com.sdk.SDKAPI.SDKAPI;
    import com.sdk.SDKAPI.SDKUtility;
    import com.unity3d.player.UnityPlayer;
    import com.unity3d.player.UnityPlayerActivity;
    
    
    public class MainActivity extends UnityPlayerActivity
    {
    	public static Activity CurrentActivity;
    	public static MyHandler myHandler;//百度SDK
    	private ActivityAnalytics mActivityAnalytics;//百度SDK
    	private ActivityAdPage mActivityAdPage;
    	@Override protected void onCreate (Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		 CurrentActivity=this;
    		  mActivityAnalytics = new ActivityAnalytics(this);
    		  mActivityAdPage = new ActivityAdPage(this, new Listener(){
    				@Override
    				public void onClose() {
    					//TODO 关闭暂停页面,CP可以让玩家继续玩游戏
    					Toast.makeText(getApplicationContext(), "继续游戏", Toast.LENGTH_LONG).show();
    				}
    				
    			}); 
    		myHandler=new MyHandler();
    		
    	}
    	@Override protected void onDestroy()
    	{
    		BDGameSDK.destroy();
    		mUnityPlayer.quit();
    		super.onDestroy();
    	}
    	@Override
    	protected void onResume() { 
    		super.onResume(); 
    		mActivityAdPage.onResume(); 
    		mActivityAnalytics.onResume();
    		
    	}
    	
    	
    	@Override
    	protected void onStop() { 
    		super.onStop();
    		mActivityAdPage.onStop();
    	}
    	
    	@Override
    	protected void onPause() { 
    		super.onPause();
    		mActivityAdPage.onPause();
    		mActivityAnalytics.onPause();
    		
    	}
    	@Override
    	public void finish() {
    		// TODO Auto-generated method stub
    		super.finish();
    		BDGameSDK.closeFloatView(this);//关掉悬浮框
    	}
    	
    	
    	
    	public class MyHandler extends Handler
    	{
    		public MyHandler()
    		{
    			
    		}
    		 public MyHandler(Looper L) {
    	            super(L);
    	        }
    
    	        /*
    	         * 子类必须重写该方法,接受该消息
    	         * */
    	        @Override
    	        public void handleMessage(Message msg)
    			{
    				if(msg.what==SDKUtility.E_SDKFunType.INIT.ordinal())
    				{
    					initBDGameSDK();
    					Log.i("Unity", "调用了SDK初始化方法");
    				}else if(msg.what==SDKUtility.E_SDKFunType.LOGIN.ordinal())
    				{
    					BDSDKLogic();
    					Log.i("Unity", "调用了SDK登入方法");
    				}else if(msg.what==SDKUtility.E_SDKFunType.LOGOUT.ordinal())
    				{
    					BDSDKLogOut();
    					Log.i("Unity", "调用了SDK登出方法");
    				}else if(msg.what==SDKUtility.E_SDKFunType.PAY.ordinal())
    				{
    					BDSDKPay(SDKAPI.currPayData.num,SDKAPI.currPayData.orderIdString);
    					Log.i("Unity", "调用了SDK支付方法");
    				}else if(msg.what==SDKUtility.E_SDKFunType.GAMECENTER.ordinal())
    				{
    					Log.i("Unity", "调用了SDK游戏中心方法");
    				}
    				super.handleMessage(msg);
    				Log.i("Unity", "-----");
    			}
    	}
    	
    	
    	
    	
    	
    	
    	/*public static Handler MyHandler =new Handler()
    	{
    		public void handleMessage(Message msg)
    		{
    			if(msg.what==SDKUtility.E_SDKFunType.INIT.ordinal())
    			{
    			
    				Log.i("Unity", "调用了SDK初始化方法");
    			}else if(msg.what==SDKUtility.E_SDKFunType.LOGIN.ordinal())
    			{
    				Log.i("Unity", "调用了SDK登入方法");
    			}else if(msg.what==SDKUtility.E_SDKFunType.LOGOUT.ordinal())
    			{
    				Log.i("Unity", "调用了SDK登出方法");
    			}else if(msg.what==SDKUtility.E_SDKFunType.PAY.ordinal())
    			{
    				Log.i("Unity", "调用了SDK支付方法");
    			}else if(msg.what==SDKUtility.E_SDKFunType.GAMECENTER.ordinal())
    			{
    				Log.i("Unity", "调用了SDK游戏中心方法");
    			}
    			super.handleMessage(msg);
    			Log.i("Unity", "-----");
    		}
    		
    	};*/
    	
    	 private void setSuspendWindowChangeAccountListener(){//设置切换账号事件监听(个人中心界面切换中心)
    			BDGameSDK.setSuspendWindowChangeAccountListener(new IResponse<Void>(){
    
    				@Override
    				public void onResponse(int resultCode, String resultDesc,
    						Void extraData) { 
    					 switch(resultCode){
    					 case ResultCode.LOGIN_SUCCESS:
    						 //TODO 登录成功,不管之前是什么情况,游戏内都要切换成新的用户
    						 //返回主界面,重新刷新
    						 Toast.makeText(getApplicationContext(), "鐧诲綍鎴愬姛", Toast.LENGTH_LONG).show();
    						 break;
    					 case ResultCode.LOGIN_FAIL:
    						//TODO 登录失败,游戏内部之前如果是已经被登录的,要清楚自己记录的登录状态,设置成未登录。如果之前为登录,不用处理
    						 Toast.makeText(getApplicationContext(), "鐧诲綍澶辫触", Toast.LENGTH_LONG).show();
    						 break;
    					 case ResultCode.LOGIN_CANCEL:					 
    						//TODO 取消,操作前后的登录状态没变换
    						 break; 
    						 
    					 } 
    				}
    				
    			});
    		}
    	/*
    	 * 初始化SDK
    	 * */
    	private void initBDGameSDK()
    	{
    		BDGameSDKSetting mBDGameSDKSetting = new BDGameSDKSetting();
    		mBDGameSDKSetting.setAppID(3067515);//APPID
    		mBDGameSDKSetting.setAppKey("f3Os4GAOqxgm79GqbnkT9L8T");//APPKEY
    		mBDGameSDKSetting.setDomain(Domain.DEBUG);//
    		mBDGameSDKSetting.setOrientation(BDGameSDKSetting.Orientation.PORTRAIT);
    		 
    		BDGameSDK.init(this, mBDGameSDKSetting, new IResponse<Void>(){
    
    			@Override
    			public void onResponse(int resultCode, String resultDesc,
    					Void extraData) {
    				switch(resultCode){
    				case ResultCode.INIT_SUCCESS:
    					//初始化成功
    					
    					break;
    					
    				case ResultCode.INIT_FAIL:
    					//初始化失败
    					
    				default:
    					Toast.makeText(CurrentActivity, "启动失败", Toast.LENGTH_LONG).show();
    					finish();
    					
    				}
    				
    			}
    			
    		}); 
    	}
    	/*
    	 * 登录
    	 * */
    	 public void BDSDKLogic()
    	 {
    		   BDGameSDK.login(new IResponse<Void>() {
    				
    				@Override
    				public void onResponse(int resultCode, String resultDesc, Void extraData) { 
    					Log.d("login", "this resultCode is " + resultCode);
    					String hint = "";
    					switch(resultCode){
    					case ResultCode.LOGIN_SUCCESS:
    						hint="登录成功";
    						//拿到用户ID
    					    String uid=	BDGameSDK.getLoginUid();
    					    //UnityPlayer.UnitySendMessage("SDKMgr", "BDLoginCallBack", uid);
    					    SDKUtility.SendMsgToUnity(SDKUtility.CallBackFunName.LOGINCALLBACK_STRING, uid);
    					    //显示悬浮按钮
    					    BDGameSDK.showFloatView(CurrentActivity);
    					    //切换账号
    					    setSuspendWindowChangeAccountListener();
    						break; 
    					case ResultCode.LOGIN_CANCEL:
    						 SDKUtility.SendMsgToUnity(SDKUtility.CallBackFunName.LOGINCALLBACK_STRING, "-1");
    						hint="取消登录";
    						break;
    					case ResultCode.LOGIN_FAIL:
    						 SDKUtility.SendMsgToUnity(SDKUtility.CallBackFunName.LOGINCALLBACK_STRING, "");
    						hint="登录失败";
    					default:
    						SDKUtility.SendMsgToUnity(SDKUtility.CallBackFunName.LOGINCALLBACK_STRING, "");
    						hint="登录失败";
    					} 
    					Toast.makeText(getApplicationContext(), hint, Toast.LENGTH_LONG).show(); 
    				}
    			});
    	   }
    	  /*
    	  * 登出
    	  * */
    	   public void BDSDKLogOut()
    	   {
    		   BDGameSDK.logout();
    	   }
    	   /*支付(定额支付)
    	    * */
    	   public void BDSDKPay(int num,String oderId)
    	   {
    		   PayOrderInfo payOrderInfo = buildOrderInfo(num,oderId);
    			if(payOrderInfo == null){
    				return;
    			}
    			
    			BDGameSDK.pay(payOrderInfo, null, 
    					new IResponse<PayOrderInfo>(){
    				  
    						@Override
    						public void onResponse(int resultCode, String resultDesc,
    								PayOrderInfo extraData) 
    						{
    							String resultStr = "";
    							switch(resultCode){
    							case ResultCode.PAY_SUCCESS:
    								resultStr = "支付成功:" + resultDesc;
    								break;
    							case ResultCode.PAY_CANCEL:
    								resultStr = "取消支付";
    								break;	
    							case ResultCode.PAY_FAIL:
    								resultStr = "支付失败" + resultDesc;
    								break;	
    							case ResultCode.PAY_SUBMIT_ORDER:
    								resultStr ="支付失败"; 
    								break;	
    							}
    							Toast.makeText(getApplicationContext(), resultStr, Toast.LENGTH_LONG).show();
    							 
    						}
    				
    			});
    	   }
    	   /*
    	    * 构建订单信息
    	    * 总金额
    	    * 订单号
    	    * */
    	   public PayOrderInfo buildOrderInfo(int amount,String oderId){
    			String cpOrderId = UUID.randomUUID().toString();//
    			String goodsName = "金币";
    			String totalAmount = String.valueOf(amount);
    			int ratio = 1;
    			String extInfo = oderId;
    			
    			if(TextUtils.isEmpty(totalAmount)){
    				totalAmount = "0";
    			}
    			 
    			
    			PayOrderInfo payOrderInfo = new PayOrderInfo();
    			payOrderInfo.setCooperatorOrderSerial(cpOrderId);
    			payOrderInfo.setProductName(goodsName); 
    			long p = Long.parseLong(totalAmount); 
    			payOrderInfo.setTotalPriceCent(p);
    			payOrderInfo.setRatio(ratio);
    			payOrderInfo.setExtInfo(extInfo);
    			
    			return payOrderInfo;
    		}
    	   
    
    }
    

     注意我们要修改manifest文件。将Application里面的Android:name 改成

     android:name="com.CW.BaiDuSDKPro1.GameApplication"
    

     Application里面的Activity:name改成:

     android:name="com.CW.AndroidSDK.MainActivity"
    

     除了这些之外还有一些service和uses-permission还有其他的acrivity按照百度SDK的文档要求全部复制进去

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.CW.BaiDuSDKPro1" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal">
      <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
      <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner" android:name="com.CW.BaiDuSDKPro1.GameApplication">
        <activity android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.CW.AndroidSDK.MainActivity">
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
          </intent-filter>
          <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
          <!-- ↓↓↓ SDK ↓↓↓ -->
    
    
            <!-- 0-百度 1-多酷 2-91 -->
    
            <meta-data android:name="BDPlatformType" android:value="0" />
            
            
            <meta-data android:name="BDGameVersion" android:value="3.2.0" />
            
              <activity
                android:name="com.baidu.platformsdk.LoginActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:excludeFromRecents="true"
                android:theme="@style/bdp_dialog_style_fullscreen"/>
            <activity
                android:name="com.baidu.platformsdk.AssistActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:excludeFromRecents="true"
                android:theme="@style/bdp_dialog_style_fullscreen"/> 
            <activity
                android:name="com.baidu.platformsdk.BindPhoneActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:excludeFromRecents="true"
                android:theme="@style/bdp_dialog_style_fullscreen"/>
            
            <activity
                android:name="com.baidu.platformsdk.CashierDeskActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false" 
                android:theme="@style/bdp_dialog_style_fullscreen"
                android:windowSoftInputMode="adjustPan"/>
            
            <activity
                android:name="com.baidu.platformsdk.WebActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false" 
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                android:windowSoftInputMode="adjustPan"/>
    
            
            <activity
                android:name="com.baidu.platformsdk.ModifyPasswordActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:excludeFromRecents="true"
                android:theme="@style/bdp_dialog_style_fullscreen"/>
            <activity
                android:name="com.baidu.platformsdk.ThirdPartyLoginActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:excludeFromRecents="true"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                android:exported="false"/>
            <activity
                android:name="com.baidu.platformsdk.VisitorBindActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:excludeFromRecents="true"
                android:theme="@style/bdp_dialog_style_fullscreen"/> 
            <activity
                android:name="com.baidu.platformsdk.BaiduBeanDetailActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:windowSoftInputMode="adjustPan"
                android:theme="@style/bdp_dialog_style_fullscreen" /> 
            <activity
                android:name="com.baidu.platformsdk.OrderDetailActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:windowSoftInputMode="adjustPan"
                android:theme="@style/bdp_dialog_style_fullscreen" />
             
            
            <activity
                android:name="com.baidu.platformsdk.SapiWebActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:windowSoftInputMode="adjustPan"
                android:theme="@style/bdp_dialog_style_fullscreen" />
            <activity
                android:name="com.baidu.platformsdk.SapiLoginProxyActivity"
                android:configChanges="orientation|navigation|screenSize|keyboard|keyboardHidden"
                android:exported="false"
                android:windowSoftInputMode="adjustPan"
                android:theme="@style/bdp_dialog_style_fullscreen" />
            
            <service
                android:name="com.baidu.platformsdk.BDPlatformService"
                android:exported="false" />
    
            <!-- ↑↑↑ SDK ↑↑↑ -->
    
    
            <!-- ↓↓↓ 百度钱包 ↓↓↓ -->
            <activity
                android:name="com.baidu.android.pay.ui.WelcomeActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivityWelcome"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.PayResultActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" >
            </activity>
            <activity
                android:name="com.baidu.android.pay.ui.PwdCheckActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateVisible" >
            </activity>
            <activity
                android:name="com.baidu.android.pay.ui.PwdSetActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateVisible" >
            </activity>
            <activity
                android:name="com.baidu.android.pay.ui.PwdConfirmActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateVisible" >
            </activity>
            <activity
                android:name="com.baidu.android.pay.ui.PwdPayActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivitTranslucent"
                android:windowSoftInputMode="stateVisible" />
            <activity
                android:name="com.baidu.android.pay.ui.PwdPaySmsActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivitTranslucent"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.WebViewActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" >
            </activity>
            <activity
                android:name="com.baidu.android.pay.ui.BindFirstActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="adjustResize" />
            <activity
                android:name="com.baidu.android.pay.ui.BindSecondActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.BindSecondCreditAcitvity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.BindSecondCredit2Activity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.BindThirdActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="adjustResize" />
            <activity
                android:name="com.baidu.android.pay.ui.SelectBindCardActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.LoginActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.PassNormalizeActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
            <activity
                android:name="com.baidu.android.pay.ui.OrderHomeActivity"
                android:configChanges="keyboardHidden|navigation|orientation|screenSize"
                android:excludeFromRecents="true"
                android:exported="false"
                android:theme="@style/EbpayThemeActivit"
                android:windowSoftInputMode="stateHidden" />
                 
    
            <!-- ↑↑↑ 百度钱包 ↑↑↑ -->
            
            <!-- ↓↓↓ passport ↓↓↓ -->
            <activity
                android:name="com.baidu.sapi2.utils.LoginProtectAcitivity"
                android:screenOrientation="portrait"
                android:theme="@style/bdp_SapiTheme"
                android:windowSoftInputMode="adjustPan" />
            <!-- ↑↑↑ passport ↑↑↑ -->
    
    
            <!-- ↓↓↓ 银联SDK ↓↓↓ -->
            <activity android:name="com.unionpay.uppay.PayActivity"
                android:screenOrientation="landscape" />
            <!-- ↑↑↑ 银联SDK ↑↑↑ -->
            
            <!-- ↓↓↓ 支付宝插件 ↓↓↓ -->
            <activity android:name="com.alipay.sdk.app.H5PayActivity"
    				   android:configChanges="orientation|keyboardHidden|navigation"
    				   android:exported="false"
    				   android:screenOrientation="behind" />
            <activity android:name="com.alipay.sdk.auth.AuthActivity"
    				   android:configChanges="orientation|keyboardHidden|navigation"
    				   android:exported="false"
    				   android:screenOrientation="behind" />
            <!-- ↑↑↑ 支付宝插件 ↑↑↑ -->
            
            <!-- ↓↓↓ 多酷SDK ↓↓↓ --> 
            <activity
                android:name="com.duoku.platform.ui.DKContainerActivity"
                android:configChanges="orientation|keyboardHidden|navigation|screenSize"
                android:launchMode="singleTop"
                android:theme="@style/StyledIndicators" >
            </activity>
    
            <service android:name="com.duoku.platform.service.DKSuspensionService" />
    
            <!-- 贴吧 start -->
            <activity
                android:name="com.baidu.tiebasdk.ext.motu.SelectBarActivity"
                android:configChanges="orientation|keyboardHidden|navigation" />
            <activity
                android:name="com.baidu.tiebasdk.account.InputUserNameActivity"
                android:configChanges="orientation|keyboardHidden|navigation"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.account.LoginActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.account.Register2Activity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.account.ActivationActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.account.ProtocolActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.frs.FrsActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.frs.FrsImageActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.mention.MentionActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.mention.ReplyMeActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.mention.AtMeActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.pb.NewPbActivity"
                android:configChanges="orientation|keyboardHidden|navigation"
                android:windowSoftInputMode="adjustResize|stateHidden" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.pb.ImagePbActivity"
                android:configChanges="orientation|keyboardHidden|navigation"
                android:windowSoftInputMode="adjustResize" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.write.WriteActivity"
                android:configChanges="orientation|keyboardHidden|navigation"
                android:windowSoftInputMode="stateVisible|adjustResize" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.write.VcodeActivity"
                android:configChanges="orientation|keyboardHidden|navigation"
                android:windowSoftInputMode="stateVisible|adjustResize" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.write.NewVcodeActivity"
                android:configChanges="orientation|keyboardHidden|navigation"
                android:windowSoftInputMode="stateHidden" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.write.AtListActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.write.WriteImageActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.pb.ImageActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity
                android:name="com.baidu.tiebasdk.pb.WebActivity"
                android:configChanges="orientation|keyboardHidden|navigation" >
                <intent-filter>
                </intent-filter>
            </activity>
            <activity android:name="com.baidu.tiebasdk.more.AccountActivity" >
                <intent-filter>
                </intent-filter>
            </activity>
            <!-- 贴吧activity end -->
            
            <!-- 贴吧 service begin -->
            <service
                android:name="com.baidu.tiebasdk.service.TiebaUpdateService"
                android:enabled="true" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.tiebasdk.service.TiebaFullUpdateService"
                android:enabled="true" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.tiebasdk.service.ClearTempService"
                android:enabled="true" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.tiebasdk.service.FatalErrorService"
                android:enabled="true" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.tiebasdk.service.TiebaSyncService"
                android:enabled="true" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.tiebasdk.service.TiebaMessageService"
                android:enabled="true" >
                <intent-filter>
                    <action android:name="com.baidu.tiebasdk.service.Message" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.tiebasdk.service.TiebaPrepareImageService"
                android:enabled="true" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </service>
            <!-- 贴吧 service end -->
    
    
            <!-- push service client -->
            <receiver android:name="com.duoku.platform.push.MyReceiver" >
                <intent-filter>
                    <action android:name="com.duoku" />
                </intent-filter>
            </receiver>
            <receiver android:name="com.duoku.platform.push.PushMessageReceiver" >
                <intent-filter>
    
                    <!-- 接收push消息 -->
                    <action android:name="com.baidu.android.pushservice.action.MESSAGE" />
                    <!-- 接收bind,unbind,fetch,delete等反馈消息 -->
                    <action android:name="com.baidu.android.pushservice.action.RECEIVE" />
                    <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
                </intent-filter>
            </receiver>
            <receiver
                android:name="com.baidu.android.pushservice.PushServiceReceiver"
                android:process=":bdservice_v1" >
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                    <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />
                    <action android:name="com.baidu.android.pushservice.action.media.CLICK" />
                    <action android:name="android.intent.action.MEDIA_MOUNTED" />
                    <action android:name="android.intent.action.USER_PRESENT" />
                    <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
                    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
                </intent-filter>
            </receiver>
            <receiver
                android:name="com.baidu.android.pushservice.RegistrationReceiver"
                android:process=":bdservice_v1" >
                <intent-filter>
                    <action android:name="com.baidu.android.pushservice.action.METHOD" />
                    <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.PACKAGE_REMOVED" />
    
                    <data android:scheme="package" />
                </intent-filter>
            </receiver>
    
            <service
                android:name="com.baidu.android.pushservice.PushService"
                android:exported="true"
                android:process=":bdservice_v1" >
                <intent-filter>
                    <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />
                </intent-filter>
            </service>
            <service
                android:name="com.baidu.android.pushservice.CommandService"
                android:exported="true" />
            <!-- push service end -->
    
    
            <!-- 贴吧 receiver start -->
            <receiver android:name="com.baidu.tiebasdk.service.TiebaReceiver" >
                <intent-filter>
                    <action android:name="com.baidu.tiebasdk.broadcast.service" />
                    <action android:name="com.baidu.tiebasdk.broadcast.sync" />
                </intent-filter>
            </receiver>
            <receiver android:name="com.baidu.tiebasdk.service.InstallReceiver" >
                <intent-filter>
                    <action android:name="android.intent.action.PACKAGE_ADDED" />
                    <action android:name="android.intent.action.PACKAGE_REMOVED" />
    
                    <data android:scheme="package" />
                </intent-filter>
            </receiver>
            <receiver android:name="com.baidu.tiebasdk.service.SyncLoginReceiverForAs" >
                <intent-filter>
                    <action android:name="com.baidu.tiebasdk.broadcast.syncLoginFromAS" />
                </intent-filter>
            </receiver>
    
            <!-- 贴吧  receiver end -->
            <!-- ↑↑↑ 多酷SDK ↑↑↑ -->
        
      </application>
      <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="21" />
      <uses-feature android:glEsVersion="0x00020000" />
      <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
      <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
      <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
      
        <!-- ↓↓↓ SDK ↓↓↓ -->
        <uses-permission android:name="android.permission.SEND_SMS" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.GET_TASKS" />
        
    
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
        <!-- ↑↑↑ SDK ↑↑↑ -->
        
        <!-- ↓↓↓ DK SDK ↓↓↓ --> 
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
        <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.FLASHLIGHT" />
        <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
        <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
        <uses-permission android:name="android.permission.CALL_PHONE" />
        
    </manifest>
    

     测试运行的界面如下:

  • 相关阅读:
    27. Remove Element
    列表变成字典
    1. Two Sum
    CVPR2019:What and How Well You Performed? A Multitask Learning Approach to Action Quality Assessment
    959. Regions Cut By Slashes
    118. Pascal's Triangle
    loj3117 IOI2017 接线 wiring 题解
    题解 NOI2019 序列
    题解 省选联考2020 组合数问题
    题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/7715861.html
Copyright © 2011-2022 走看看