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);
    }

猜你喜欢

转载自blog.csdn.net/qq_35427437/article/details/90445640