gpt4 book ai didi

java - 调用未接号码日志?

转载 作者:行者123 更新时间:2023-12-02 02:32:55 24 4
gpt4 key购买 nike

我是一个菜鸟,正在开发他的第一个应用程序。想象一下,您很忙,无法在白天接听一些电话。该应用程序会向您显示未接来电的日志,您只需单击一个按钮即可开始调用它们。不是一下子全部完成 - 您从第一个错过的号码开始,通话结束后自动返回应用程序,自动调用第二个号码,依此类推,直到列表为空或您完成通话。这是我的应用程序现在的样子:

/image/lHGQW.jpg

我记录未接来电并显示它们,并且我有一个“开始调用”按钮,应该启动循环。我不知道如何做到这一点,以便 onClick 开始调用未接来电 1,然后是未接来电 2 等,尽管我的 Google 游戏还不是很强,但我还没有找到太多相关信息。这是我获取通话详细信息的方式:

public String getCallDetails() {

StringBuffer sb = new StringBuffer();

// if
// (ActivityCompat.checkSelfPermission(getApplicationContext(),
// Manifest.permission.READ_CALL_LOG) !=
// PackageManager.PERMISSION_GRANTED) {
//
// return ;
// }

Cursor managedCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DATE + " DESC");

int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);

sb.append("\n");

while (managedCursor.moveToNext()) {
String phNumber = managedCursor.getString(number);
String callType = managedCursor.getString(type);
String callDate = managedCursor.getString(date);
Date callDayTime = new Date(Long.valueOf(callDate));
String callDuration = managedCursor.getString(duration);
String dir = null;
int dircode = Integer.parseInt(callType);

switch (dircode) {
case CallLog.Calls.OUTGOING_TYPE:
dir = "OUTGOING";
break;

case CallLog.Calls.INCOMING_TYPE:
dir = "INCOMING";
break;

case CallLog.Calls.MISSED_TYPE:
dir = "MISSED";
break;
}

// Getting the current date and time using the date class
Date d = new Date();

if (dir == "MISSED") {

sb.append("\n Phone Number: " + phNumber + " \n Call Date: " + callDayTime + "\n");
sb.append(" ---------------------------------------------------\n \n");

}
}

managedCursor.close();
return sb.toString();

}

这是我的点击按钮:

callBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {

try {

// String phone = ????
// Using the ACTION.CALL intent, you're going straight to the first
// call
// Intent callIntent = new
// Intent(Intent.ACTION_CALL, Uri.fromParts("tel",
// phone, null));

// Check for permission, write yes/no etc. here
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE},
UNIQUE_REQUEST_CODE);
} else {
Toast.makeText(MainActivity.this, "Permission granted! Thank you!", Toast.LENGTH_SHORT).show();

}
startActivity(Intent.createChooser(callIntent, "callTitle"));

} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Oh no, your call has failed!",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});

我还尝试对其进行过滤,以便仅显示过去两天的未接来电,但这是稍后的事情。只是想知道现在有什么好方法可以循环处理未接​​来电。

欢迎大家指点!!

谢谢!

最佳答案

您可以使用Phone State Listener监听调用状态。每当调用状态返回到STATE_IDLE时您可以接听下一个电话。

完成后不要忘记停止列出状态。

关于java - 调用未接号码日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46804714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com