Android(進程通信)AIDL

AIDL

在Android中進程通信 直接看代碼  ,Dome要講的是支付寶和淘寶進行支付通信

第一步創建AIDL接口

// IService.aidl
package com.android.aidl;

// Declare any non-default types here with import statements
 /**
     *
     * @param account  賬號
     * @param pwd		密碼
     * @param payPwd	支付密碼
     * @param money		支付金額
     * @param currTimeMiles  當前的時間撮
     * @return int
     *        代碼錯誤 ----- -1
     *        賬號密碼錯誤 ---0
     *        支付密碼錯誤 ---1
     *        餘額不足    ------2
     *        支付成功    ------3
     */
interface IService {
    	int callSafePay(String account,String pwd,String payPwd,
    			double money,long currTimeMiles);
}

第二步創建支付寶服務

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return new MyBind();
    }
    private class MyBind extends IService.Stub{
        @Override
        public int callSafePay(String account, String pwd, String payPwd, double money, long currTimeMiles) throws RemoteException {
            return safePay(account,pwd,payPwd,money,currTimeMiles);
        }
    }

    /**
     *
     * @param account  賬號
     * @param pwd		密碼
     * @param payPwd	支付密碼
     * @param money		支付金額
     * @param currTimeMiles  當前的時間撮
     * @return int
     *        代碼錯誤 ----- -1
     *        賬號密碼錯誤 ---0
     *        支付密碼錯誤 ---1
     *        餘額不足    ------2
     *        支付成功    ------3
     */
    private int safePay(String account,String pwd,String payPwd,
                        double money,long currTimeMiles){
        if(!account.equals("zhangsa")||!pwd.equals("123456")){
            return 0;
        }if(!payPwd.equals("123456")){
            return 1;
        }
        //如果支付的金額大於一千塊就顯示餘額不足
        if(money>1000){
            return 2;
        }
        //如果上面的多不滿足  說明支付成功
        return 3;
    }
}

 

 

第三步給服務提供外部的一個Action去啓動服務

<service android:name="com.li.zhifubao.MyServicer">
            <intent-filter >
                <action android:name="com.li.zhifubao.AlipayService.SAFEPAY"/>
            </intent-filter>
 </service>

 

 



創建淘寶

第一步,吧對應的支付寶的aidl文件複製到淘寶裏面   , 包名類名要一致  重構項目

第二部通過一個Intent啓動服務使用BindService

 

 public void onClick(View view){
        Log.v("liwangjiang","onClick"+getPackageName());
        Intent intent = new Intent();
        intent.setAction("com.li.zhifubao.AlipayService.SAFEPAY");
        intent.setPackage("com.android.aidl");
        bindService(intent, new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                Log.v("liwangjiang","service");
                IService bind = IService.Stub.asInterface(service);
                try {
                    int id= bind.callSafePay("zhangsa","123456","123456",123,SystemClock.currentThreadTimeMillis());
                    switch (id) {
                        case 0:
                            Toast.makeText(MainActivity.this, "賬號或密碼錯誤", Toast.LENGTH_SHORT).show();
                            break;
                        case 1:
                            Toast.makeText(MainActivity.this, "支付密碼錯誤", Toast.LENGTH_SHORT).show();
                            break;
                        case 2:
                            Toast.makeText(MainActivity.this, "餘額不足", Toast.LENGTH_SHORT).show();
                            break;
                        case 3:
                            Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
                            break;

                        default:
                            break;
                    }
                } catch (RemoteException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {

            }
        },BIND_AUTO_CREATE);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章