uniapp安卓android获取手机通话记录使用plus.android接口

时间:2024-04-14 08:01:31

第一步,我们要通过plus.android.requestPermissions(['android.permission.READ_CALL_LOG', 'android.permission.WRITE_CALL_LOG', 'android.permission.CALL_PHONE']获取读取通话记录,写入通话记录,直接拨打通话记录,它的两个回调函数,一个是成功后的回调,一个失败后的回调,那么我们直接将其写在qqlevel(callback),这样的函数里面,函数体主要进行权限请求,请求成功,则调用callback,如果请求权限不成功,则执行未成功的操作!

uniapp安卓android获取手机通话记录使用plus.android接口

第二步,通过调用接口获取数据,下面是主要代码

 var CallLog = plus.android.importClass('android.provider.CallLog');

                var Activity = plus.android.runtimeMainActivity();

                var ContentResolver = plus.android.importClass('android.content.ContentResolver');

                var resolver = Activity.getContentResolver();

                plus.android.importClass(resolver);

                var String = plus.android.importClass("java.lang.String");

                var cs = resolver.query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);

                var talist = [];

                uni.showLoading({

                    title: "匹配通话记录中.."

                });

                while (plus.android.invoke(cs, "moveToNext")) {

                    //如果相等的话,才放进来

                    if (ctime * 1000 <= plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DATE))) {

                        if (telphone == plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.NUMBER))) {

                            talist.push({

                                xm: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.CACHED_NAME)),

                                telphone: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.NUMBER)),

                                duration: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DURATION)),

                                date: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DATE)),

                                type: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.TYPE))

                            });

                        }

                    } else {

                        break;

                    }

                }