Android(进程通信)AIDL
发布日期:2021-06-30 21:23:34 浏览次数:2 分类:技术文章

本文共 3564 字,大约阅读时间需要 11 分钟。

AIDL

在Android中进程通信 直接看代码  ,Dome要讲的是支付宝和淘宝进行支付通信

第一步创建AIDL接口

// IService.aidlpackage 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去启动服务

 

 



创建淘宝

第一步,吧对应的支付宝的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);    }

 

转载地址:https://liwangjiang.blog.csdn.net/article/details/90445640 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android-MMS中彩信附件的格式及分析
下一篇:Android ContentProvider(Android内容提供者,跨进程通讯)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月22日 01时53分33秒