我正处于开发呼叫日志应用程序的阶段。在我深入研究之前,我想了解一些有关这方面的信息,因为我已经阅读了Android Developer中的调用日志类。
我想知道是否有一种方法可以对呼叫日志和短信进行排序,只提取国际和本地(也与短信相同)。我是否有可能通过使用像Libphonenumber这样的第三方库来完成这项任务?如果有人有任何代码和建议,将帮助我,我将非常感激。我希望以代码的形式提供解决方案,或者建议我如何实现这一目标。当我开始研究项目时,我真的不想陷入困境
这是我必须获取仅拨打电话的通话记录的代码
managedCursor = managedQuery( CallLog.Calls.CONTENT_URI,null, null,null, null);
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);
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 );
int realdura=Integer.parseInt(callDuration);
String dir = null;
int dircode = Integer.parseInt( callType );
if(dircode==CallLog.Calls.OUTGOING_TYPE){
dir="OutGoing Call";
total_duration=realdura+total_duration;
callList=("\nPhone Number:--- "+phNumber +" \nCall Type:--- "+dir+" \nCall Date:--- "+callDayTime+" \nCall duration in sec :--- "+callDuration);
data.add(callList);
}
}
managedCursor.close();
call.setText("the total duration is: "+total_duration);
list_data=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
call_list.setAdapter(list_data);
}
答案 0 :(得分:1)
使用libphonenumber
似乎是一个好主意,让事情在国际上发挥作用,有一个很多国家细节如何表示。
你需要的是电话PhoneNumberUtil.parse(我似乎无法直接链接),并从生成的电话号码中选择country_code(记录为here in the example)这应该只允许你将国家/地区代码与您当地的国家/地区代码进行比较,并轻松了解该呼叫是否为国际。
这是一个快速而肮脏的例子(没有错误处理),“SE”是瑞典,国际电话代码为“00”,国家代码为“46”(即该号码是国内的,并输出)
public static void main(String[] argv) throws NumberParseException {
String str = "00468328999298";
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber number = phoneNumberUtil.parse(str, "SE");
if(number.getCountryCode() != phoneNumberUtil.getCountryCodeForRegion("SE"))
System.out.println("International");
else
System.out.println("Domestic");
}