通话记录界面,html5通话记录

hacker2年前网络黑客137

怎么查询通话记录?

联通用户可登录中国联通APP查询通话详单,打开中国联通APP点击“服务>查询>话费/详单>详单查询”即可查询。

温馨提示:目前可提供近6个月(含当月)的详单信息查询。

5年前的通话记录怎么查

您好,目前运营商为用户保留最新六个月的通话记录供用户查询,时间过久的是不能查询到的。

用户可以通过营业厅,运营商的网上营业厅等渠道查询通话记录的,以电信为例,通过电信网上营业厅查询电信的通话记录的步骤如下:

1、首先打开浏览器,输入中国电信网上营业厅然后搜索,然后点击进入中国电信网上营业厅并且登录自己的电信手机号。

2、登录后,进入个人中心,然后左侧有业务导航,点击通话短信详单查询

3、然后根据提示获取相应的验证码就可以查询通话记录了,如图

通话记录在哪里怎么看呢?

联通手机卡用户可通过以下方式查询通话记录:

1、登录中国联通网上营业厅,点击菜单“查询--话费/详单--通话详单”查询通话详单。

2、登录中国联通APP,点击菜单“服务--查询--话费/详单--详单查询”查询通话详单。

3、机主本人带上有效证件原件到当地联通自有营业厅查询通话详单。

温馨提醒:目前可提供最近六个月(含本月)的详单信息查询。

phonegap有哪些常用插件

 最近采用phonegap做一个APP,需要在应用内实现拨打 *** ,通话结束後能反馈通话相关状态,查看了一番phonegap官方文档,似乎没有跟 *** 相关的api,在互联网上也大概搜了一下,好像没找到相关的内容。其实html5是支持直接在网页上拨打 *** 的,只要加入如下html代码即可:

[html] view plaincopy

打 *** a href="tel:10086" 移动 *** /a

发短信a href=" *** s:10086" 发短信/a

但这中方式只能实现拨打 *** 和发送短信,不能反馈结果,比如我想在应用能实现拨打 *** ,通话结束後自动保存通话的 *** 号码、通话时间、时长等,默认的html功能就不能满足了。

phonegap官方不提供的功能,我们只有自己通过开发插件了实现了

下面我们通过代码来简单介绍下phonegap插件开发步骤:

一、定义 *** 插件API

[javascript] view plaincopy

var Phone = function() {

};

Phone.prototype.call = function (successCallback, failureCallback,number) {

cordova.exec(successCallback, failureCallback, "Phone", "call", [number]);

};

window.Phone = new Phone();

上面的代码我们定义了一个Phone插件,插件有一个call API,我们传入

[javascript] view plaincopy

successCallback

failureCallback

分别做为 *** 拨打成功和失败的回调函数

传入

[javascript] view plaincopy

number

做为 *** 号码

在 *** 裏边调用

phonegap的cordova.exec()

[javascript] view plaincopy

cordova.exec(successCallback, failureCallback, "Phone", "call", [number]);

就是在这个 *** 裏将执行到native端的功能调用

最後我们new一个Phone对象,把他附件到window对象上,方便以後调用。

这样,插件的 *** 代码完成。

二、native端代码(以android平台为例)

先直接上代码

[java] view plaincopy

package com.juhuibao.PhoneGapPlugin;

import java.util.Date;

import org.apache.cordova.api.CallbackContext;

import org.apache.cordova.api.CordovaPlugin;

import org.apache.cordova.api.PluginResult;

import org.json. *** ONArray;

import org.json. *** ONException;

import android.app.Activity;

import android.content.Intent;

import android.database.Cursor;

import android.net.Uri;

import android.provider.CallLog.Calls;

import android.telephony.PhoneNumberUtils;

public class Phone extends CordovaPlugin {

private static final int PHONE_CALL = 0; // 拨打 ***

private static final int PHONE_ABORT = 1; // 挂断 ***

private Date start_time;

private CallbackContext callbackContext;

private String phonenumber;

@Override

public boolean execute(String action, *** ONArray args, CallbackContext callbackContext) throws *** ONException {

try{

this.callbackContext = callbackContext;

if ("call".equals(action)) {

this.phonenumber=args.getString(0);

this.call(args.getString(0),callbackContext);

return true;

}

if ("abort".equals(action)) {

this.abort(callbackContext);

return true;

}

return false;

}

catch(Exception e){

callbackContext.error(e.getMessage());

}

return false;

}

//拨打 ***

private void call(String phonenumber, CallbackContext callbackContext) {

if (phonenumber != null phonenumber.length() 0) {

if(PhoneNumberUtils.isGlobalPhoneNumber(phonenumber)){

Intent i = new Intent();

i.setAction(Intent.ACTION_CALL);

i.setData(Uri.parse("tel:"+phonenumber));

start_time=new Date();

this.cordova.startActivityForResult(this, i,PHONE_CALL);

}

else{

callbackContext.error(phonenumber+"不是有效的 *** 号码。");

}

} else {

callbackContext.error(" *** 号码不能为空.");

}

}

//中断 ***

private void abort(CallbackContext callbackContext) {

}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {

Date end_time=new Date();

if (resultCode == Activity.RESULT_OK) {

if (requestCode == PHONE_CALL) {

this.callbackContext.error("未知状态");

}

}

else if (resultCode == Activity.RESULT_CANCELED) {

try{

if (requestCode == PHONE_CALL) {

long duration=GetLastCallDuration();

PhoneResult result=new PhoneResult();

result.setNumber(Phone.this.phonenumber);

result.setStartTime(Phone.this.start_time);

result.setEndTime(end_time);

result.setDuration(duration);

this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.to *** ONObject()));

}

}

catch(Exception e){

this.callbackContext.error(e.getMessage());

}

}

else {

this.callbackContext.error("其他错误!");

}

}

long delayTime=0;

long timeOut=2000;

long GetLastCallDuration() throws InterruptedException{

Activity activity = this.cordova.getActivity();

Cursor cursor = activity.getContentResolver().query(Calls.CONTENT_URI,

new String[] {Calls.NUMBER,Calls.DATE, Calls.DURATION, Calls.TYPE, Calls.DATE },

"number=?and type=?",

new String[]{this.phonenumber,"2"},

Calls.DEFAULT_SORT_ORDER);

activity.startManagingCursor(cursor);

boolean hasRecord = cursor.moveToFirst();

if (hasRecord) {

long endTime=cursor.getLong(cursor.getColumnIndex(Calls.DATE));

Date date = new Date(endTime);

long duration = cursor.getLong(cursor.getColumnIndex(Calls.DURATION));

long dif=this.start_time.getTime()-date.getTime();

long second=dif/1000;

if(second2second-2){

return duration;

}else{

if(delayTime=timeOut){

return 0;

}

Thread.sleep(200);

delayTime+=200;

return GetLastCallDuration();

}

}else{

if(delayTime=timeOut){

return 0;

}

Thread.sleep(200);

delayTime+=200;

return GetLastCallDuration();

}

}

}

然後调用具体实现拨打 *** 功能的 *** call *** ,在call *** 内我们首先判断 *** 号码合法性,不合法直接调用callbackContext.error("不是有效的 *** 号码。"),这个 *** 将触发 *** 端的error回调函数执行,并传入一个字符串参数,比如以上的failureCallback

如果 *** 号码合法则弹出呼叫界面,如下代码

[java] view plaincopy

if(PhoneNumberUtils.isGlobalPhoneNumber(phonenumber)){

Intent i = new Intent();

i.setAction(Intent.ACTION_CALL);

i.setData(Uri.parse("tel:"+phonenumber));

start_time=new Date();

this.cordova.startActivityForResult(this, i,PHONE_CALL);

}

else{

callbackContext.error(phonenumber+"不是有效的 *** 号码。");

}

在代码中我们通过变量start_time记录开始时间,然後使用this.cordova.startActivityForResult(this, i,PHONE_CALL);启动Activity。

在终止拨号或挂断 *** 时将执行onActivityResult *** ,我们将在此 *** 内实现通话状态信息的反馈。主要看一下这段代码

[java] view plaincopy

else if (resultCode == Activity.RESULT_CANCELED) {

try{

if (requestCode == PHONE_CALL) {

long duration=GetLastCallDuration();

PhoneResult result=new PhoneResult();

result.setNumber(Phone.this.phonenumber);

result.setStartTime(Phone.this.start_time);

result.setEndTime(end_time);

result.setDuration(duration);

this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.to *** ONObject()));

}

}

catch(Exception e){

this.callbackContext.error(e.getMessage());

}

}

不管 *** 有没有接通,resultCode总是等於Activity.RESULT_CANCELED。

我们通过GetLastCallDuration() *** 获得通话时长,原理就是读取通话记录裏边的duration字段,由於通话刚结束时通话记录可能还没出现记录,所以我们要反复调用该 *** ,直到有记录或到超时时间为止。

取得了时长我们通过this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.to *** ONObject()));把结果反馈给 *** 端。

附 PhoneResult.java

[java] view plaincopy

package com.juhuibao.PhoneGapPlugin;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.json. *** ONException;

import org.json. *** ONObject;

public class PhoneResult {

private String number = "";

private Date startTime;

private Date endTime;;

private long duration = 0;

public *** ONObject to *** ONObject() throws *** ONException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:S");

return new *** ONObject(

"{number:" + *** ONObject.quote(number) +

",startTime:" + *** ONObject.quote(sdf.format(startTime)) +

",endTime:" + *** ONObject.quote(sdf.format(endTime)) +

",duration:" + duration + "}");

}

public String getNumber() {

return number;

}

public void setNumber(String number) {

this.number = number;

}

public Date getStartTime() {

return startTime;

}

public void setStartTime(Date startTime) {

this.startTime = startTime;

}

public Date getEndTime() {

return endTime;

}

public void setEndTime(Date endTime) {

this.endTime = endTime;

}

public long getDuration() {

return duration;

}

public void setDuration(long duration) {

this.duration = duration;

}

}

这样native端的代码完成。

三、客户端调用

[javascript] view plaincopy

window.Phone.call(function (obj) { alert( *** ON.stringify(obj));

}, function (err) { alert(err); }, "13401100000");

四、配置插件

在config.xml文件中注册插件

[html] view plaincopy

plugin name="Phone" value="com.juhuibao.PhoneGapPlugin.Phone"/

在AndroidManifest.xml文件中增加权限

[html] view plaincopy

uses-permission android:name="android.permission.CALL_PHONE" /

uses-permission android:name="android.permission.READ_CALL_LOG" /

uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /

uses-permission android:name="android.permission.READ_PHONE_STATE"/

通话记录怎么查通话内容?

您好,通话记录需通过运营商查通话内容呢。

可以利用运营商APP查询,也可以拨打 *** 至运营商,或者带上身份证,亲自去营业厅查询。

以利用移动运营商APP查询为例,1、打开中国移动,进入首页向左滑动。

2、点击详单查询,进行身份认证。

3、选择查询的时间,点击通话详单。

4、打开后即可查看记录。

相关文章

通话记录爱心拼图,通话记录桃心拼图

通话记录爱心拼图,通话记录桃心拼图

通话记录拼爱心教程怎么弄啊 先截图你们的通话记录。大概用五十多张截图,这一步没有难度,主要是耐心和记录足够多,截图以后在裁剪的时候要注意把边框裁剪干净,这样在添加的时候让你抠图就很干净,也不会有黑边。...

钉钉的通话记录在哪,钉钉从哪里发语音通话记录

钉钉的通话记录在哪,钉钉从哪里发语音通话记录

钉钉怎么发语音 点击语音图标,摁住说话即可。进入首页,然后选择需要发送语音消息的好友或者群聊,进入之后,点击左下角的语音图标,然后点击按住说话,说话即可。电脑版钉钉不能直接发语音,但可以打开钉钉,然后...

如何杳询通话记录,怎样杳讯别人的通话记录

如何杳询通话记录,怎样杳讯别人的通话记录

怎么查通讯录通话记录 怎么查通讯录通话记录怎么查通讯录通话记录1. 首先插上电源,看看电脑的供电是否正常,即听 风扇 响声和看看开机按钮是否正常亮,如果正常亮风扇正常运转说明电脑的供电正常,如果开机按...

如何恢复自己的通话记录,对方通话记录怎么恢复

如何恢复自己的通话记录,对方通话记录怎么恢复

要怎么样才能恢复通话记录 若使用的是vivo手机,可以进入云服务--设置--通话记录--已备份数据,查看是否有备份通话记录,如果有备份,即可恢复记录;如果没有备份,通话记录将不能找回,若有重要的号码需...

华为手机通话记录不显示了怎么回事,荣耀手机通话记录无显示了

华为手机通话记录不显示了怎么回事,荣耀手机通话记录无显示了

华为手机不显示通话记录怎么办? 如果您的手机通话记录不显示或丢失,请您按照以下场景排查:1,拨打或接听电话后无法产生通话记录(1)请检查是否开启了隐私空间。主空间和隐私空间保存有相同的联系人时,通话记...

通话记录里面的字体怎么设置,通话记录里面的字体

通话记录里面的字体怎么设置,通话记录里面的字体

华为手机电话通讯录的字怎么变大? 华为手机字体大小调整方法:1、打开手机的设置,然后找到显示和亮度2、进入后调整字体到合适大小即可苹果手机怎么把最近通话记录中的字体调大? 点击苹果设置里面的粗体文体就...

评论列表

访客
2022-10-11 00:47:47

ute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {try{this.callbackContext = callbackContex

访客
2022-10-11 02:38:04

电话有没有接通,resultCode总是等於Activity.RESULT_CANCELED。我们通过GetLastCallDuration()方法获得通话时长,原理就是读取通话记录裏边的duration字段,由

访客
2022-10-11 04:42:23

话详单。3、机主本人带上有效证件原件到当地联通自有营业厅查询通话详单。温馨提醒:目前可提供最近六个月(含本月)的详单信息查询。phonegap有哪些常用插件 最近采用phon

访客
2022-10-11 09:33:54

ject()));把结果反馈给JS端。附 PhoneResult.java[java] view plaincopypackage com.juhuibao.PhoneGapPlugin;import java.text.SimpleDateFormat;i

访客
2022-10-11 03:41:10

duration = cursor.getLong(cursor.getColumnIndex(Calls.DURATION));long dif=this.start_time.getTime()-date.getTime();long

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。