Android 即使我能够进入通话记录,按下时我的编辑文本也不会显示通话记录号码
经过一些研究和编码,我能够进入我的通话记录。在我添加了更多代码以便能够从callLog检索到edittext的号码之后,似乎出现了错误。我已经在谷歌上搜索过了,但到目前为止都没有用。有什么建议吗-西蒙-Android 即使我能够进入通话记录,按下时我的编辑文本也不会显示通话记录号码,android,android-intent,android-edittext,contacts,calllog,Android,Android Intent,Android Edittext,Contacts,Calllog,经过一些研究和编码,我能够进入我的通话记录。在我添加了更多代码以便能够从callLog检索到edittext的号码之后,似乎出现了错误。我已经在谷歌上搜索过了,但到目前为止都没有用。有什么建议吗-西蒙- import java.sql.Date; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import androi
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CallLog;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SimonCallLogActivity extends Activity {
/** Called when the activity is first created. */
EditText display;
Button log;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//to go to Call Log//
log=(Button)findViewById(R.id.button1);
log.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
Intent myIntent=new Intent();
myIntent.setAction(Intent.ACTION_CALL_BUTTON);
startActivity(myIntent);
}
});
}
//Call Log//
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
final EditText number = (EditText) findViewById(R.id.editText1);
Cursor cursor = null;
String phoneNo = " ";
List<String> logNumbers = new ArrayList<String>();
String[] projection = new String[] {CallLog.Calls.NUMBER, CallLog.Calls.DATE, CallLog.Calls.CACHED_NAME};
Uri contacts = CallLog.Calls.CONTENT_URI;
Cursor managedCursor = managedQuery(contacts, projection, null, null, CallLog.Calls.DATE + " ASC");
getColumnData(managedCursor);
}
private void getColumnData(Cursor cur){
try{
if (cur.moveToFirst()) {
String name;
String number;
long date;
int nameColumn = cur.getColumnIndex(CallLog.Calls.CACHED_NAME);
int numberColumn = cur.getColumnIndex(CallLog.Calls.NUMBER);
int dateColumn = cur.getColumnIndex(CallLog.Calls.DATE);
System.out.println("Reading Call Details: ");
do {
name = cur.getString(nameColumn);
number = cur.getString(numberColumn);
date = cur.getLong(dateColumn);
System.out.println(number + ":"+ new Date(date) +":"+name);
// number.setText(numberColumn);
} while (cur.moveToNext());
}
}
finally
{
cur.close();
}
final String [] items = logNumbers.toArray(new String[logNumbers.size() ]) ;
AlertDialog.Builder builder = new AlertDialog.Builder(SimonCallLogActivity.this);
builder.setTitle("Choose a number: ");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
// TODO Auto-generated method stub
String selectedNumber = items[item].toString();
selectedNumber= selectedNumber.replace("-","");
selectedNumber= selectedNumber.replace("Home:", "");
selectedNumber= selectedNumber.replace("Mobile:", "");
selectedNumber= selectedNumber.replace("Work:", "");
selectedNumber= selectedNumber.replace("Other:", "");
//selectedNumber = selectedNumber.replace("+","");
number.setText(selectedNumber);
}
});
AlertDialog alert = builder.create();
if(logNumbers.size()>1){
alert.show();
}else{
String selectedNumber= phoneNo.toString();
selectedNumber=selectedNumber.replace("-", "");
number.setText(selectedNumber);
}
if(phoneNo.length()==0){
Log.d("SIMON", "No contact");
}
}
break;
}
}else
{
//gracefully handle failure
Log.w("SIMON","Warning activity not okay");
}
}
}
import java.sql.Date;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.CallLog;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
公共类SimonCallLogActivity扩展了活动{
/**在首次创建活动时调用*/
编辑文本显示;
按钮日志;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//转到调用日志//
log=(按钮)findViewById(R.id.button1);
log.setOnClickListener(新建按钮.OnClickListener(){
公共void onClick(视图v){
Intent myIntent=新Intent();
myIntent.setAction(Intent.ACTION\u CALL\u按钮);
星触觉(myIntent);
}
});
}
//通话记录//
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
最终EditText编号=(EditText)findViewById(R.id.editText1);
游标=空;
字符串phoneNo=“”;
List logNumbers=new ArrayList();
String[]projection=新字符串[]{CallLog.Calls.NUMBER,CallLog.Calls.DATE,CallLog.Calls.CACHED_NAME};
Uri contacts=CallLog.Calls.CONTENT\u Uri;
游标managedCursor=managedQuery(联系人、投影、null、null、CallLog.Calls.DATE+“ASC”);
getColumnData(managedCursor);
}
私有void getColumnData(游标cur){
试一试{
if(cur.moveToFirst()){
字符串名;
字符串编号;
长日期;
int nameColumn=cur.getColumnIndex(CallLog.Calls.CACHED_NAME);
int numberColumn=cur.getColumnIndex(CallLog.Calls.NUMBER);
int dateColumn=cur.getColumnIndex(CallLog.Calls.DATE);
System.out.println(“读取呼叫详细信息:”);
做{
name=cur.getString(nameColumn);
number=cur.getString(numberColumn);
date=cur.getLong(dateColumn);
系统输出打印项次(编号+“:”+新日期(日期)+“:”+名称);
//number.setText(numberColumn);
}while(cur.moveToNext());
}
}
最后
{
cur.close();
}
最终字符串[]items=logNumbers.toArray(新字符串[logNumbers.size()]);
AlertDialog.Builder=新建AlertDialog.Builder(SimonCallLogActivity.this);
setTitle(“选择一个数字:”);
setItems(items,新的DialogInterface.OnClickListener()对话框){
公共void onClick(对话框接口对话框,int项){
//TODO自动生成的方法存根
String selectedNumber=items[item].toString();
selectedNumber=selectedNumber。替换(“-”,”);
selectedNumber=selectedNumber.replace(“Home:,”);
selectedNumber=selectedNumber.replace(“手机:,”);
selectedNumber=selectedNumber.replace(“工作:,”);
selectedNumber=selectedNumber.replace(“其他:,”);
//selectedNumber=selectedNumber.replace(“+”,”);
number.setText(selectedNumber);
}
});
AlertDialog alert=builder.create();
如果(logNumbers.size()>1){
alert.show();
}否则{
String selectedNumber=phoneNo.toString();
selectedNumber=selectedNumber。替换(“-”,”);
number.setText(selectedNumber);
}
if(phoneNo.length()=0){
日志d(“西蒙”,“无联系人”);
}
}
打破
}
}否则
{
//优雅地处理失败
Log.w(“SIMON”,“警告活动不正常”);
}
}
}
声明日志编号
和编号
为SimonCallLogActivity
类的成员
public class SimonCallLogActivity extends Activity {
/** Member variables */
EditText display;
Button log;
List<String> logNumbers = new ArrayList<String>();
EditText number;
...
...
}
公共类SimonCallLogActivity扩展活动{
/**成员变量*/
编辑文本显示;
按钮日志;
List logNumbers=new ArrayList();
编辑文本编号;
...
...
}
删除它们的本地声明。这些“错误”是什么?我在“logNumbers”->\\final String[]items=logNumbers.toArray(新字符串[logNumbers.size()])处有一条红色下划线//另一个红色下划线表示“number”->\\number.setText(selectedNumber)//我不确定我的编码是否结构错误,或者我可能会错过一些东西……嗨,你说的“成员”是什么意思?我不明白。你用java编程多久了?就像编辑文本显示一样;按钮日志代码>大约一个月,我还在学习。。我已经将lognumbers声明为List lognumbers=new ArrayList();我建议你从一个简单的项目开始学习android编程。。这个项目对您来说太复杂了,因为您甚至不能修复简单的语法错误。先做一个hello world应用程序。不要从某处抄袭。徒手打字。您将学习修复语法错误。。