- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个基于某些规则以编程方式断开调用的应用程序!我遇到的麻烦是我试图在断开电话后获取上次通话的通话时间!但问题是我得到的持续时间是之前的通话持续时间,而不是断开的通话!
我的代码是:
public void disconnect(){
disconnectPhoneItelephony(context);
calldisconnected();
WhitelistDAO whiteListDao1 = new WhitelistDAO(context);
String dura = LastCall();
if (dura.equals("0")) {
int dbTime = Integer.parseInt(whiteListDao1.getLimit(finalNumber));
whiteListDao1.updateLimit(String.valueOf(dbTime), finalNumber);
} else {
whiteListDao1.updateLimit("0", finalNumber);
}
}
public String LastCall() {
String callDura = "0";
StringBuffer sb = new StringBuffer();
Uri contacts = CallLog.Calls.CONTENT_URI;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return null;
}
Cursor managedCursor = getApplicationContext().getContentResolver().query(
contacts, null, null, null, android.provider.CallLog.Calls.DATE+ " DESC limit 1;");
int number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER );
int duration1 = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
if( managedCursor.moveToFirst() == true ) {
String phNumber = managedCursor.getString( number );
callDura = managedCursor.getString( duration1 );
String callDate = managedCursor.getString(date);
String callDayTime = new Date(Long.valueOf(callDate)).toString();
String dir = null;
Log.e("DUR","\nPhone Number:--- "+phNumber +" \nCall duration in sec :--- "+callDura +" \nCall Date in sec :--- "+callDayTime );
}
managedCursor.close();
return callDura;
}
最佳答案
我想这应该可以解决!延迟 1 秒运行处理程序中的函数!然后您将获得正确的上次通话时长,而不是之前的通话时长。我认为android无法在断开连接后立即获取最后一次通话的详细信息!可能需要第二次延迟才能插入数据库!
喜欢:
private Handler handler = new Handler();
public void disconnect(){
disconnectPhoneItelephony(context);
calldisconnected();
handler.removeCallbacksAndMessages(null);
handler.postDelayed(new Runnable() {
@Override
public void run() {
WhitelistDAO whiteListDao1 = new WhitelistDAO(context);
String dura = LastCall();
if (dura.equals("0")) {
int dbTime = Integer.parseInt(whiteListDao1.getLimit(finalNumber));
whiteListDao1.updateLimit(String.valueOf(dbTime), finalNumber);
} else {
whiteListDao1.updateLimit("0", finalNumber);
}
}
}, 1000);
}
关于android - 在android中获取以前的通话时间而不是上次通话时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50369057/
之前看到一些类似的问题,想弄清楚。 在this article ,据说异步调用“没有线程”。 然而,in another one ,据说 Here, however, we’re running th
我为我公司的平板电脑(SAMSUNG Galaxy Tab Active2)开发了一个简单的软件,自上周五(2018 年 11 月 23 日)以来,它无法正常工作。我检查了该应用程序的所有功能,其中有
我正在使用 hadoop map-reduce 作业进行一些文本处理。我的工作已完成 99.2%,并停留在上一个 map 工作上。 map 输出的最后几行如下所示。上次发生此问题时,我尝试打印出从 m
上次 Ubuntu 更新后有人对 Docker 有疑问吗?我有 2 个由 docker-compose 在 ubuntu18.04 中运行的项目。两个项目都运行良好,但在 *.yml 中进行 0 次更
SQL Developer 在表中显示公共(public)同义词的创建和上次 DDL 时间: CREATED 15-AUG-09 LAST_DDL_TIME 15-AUG-09 O
我正在使用带有以下插件的 mavenized 库项目: com.jayway.maven.plugins.android.generation2
我正在使用 Jssor Slider 作为轮播。在 Google Chrome 上次更新到版本 45.0.2454.85 之前,它一直运行良好。想法是它不显示图像。目前,它们位于标签中,可在 Safa
我是一名优秀的程序员,十分优秀!