0
我想顯示特定來電者的通話記錄號碼從另一個活動獲取,但查詢我試圖不工作,請給解決方案。在評論中的代碼是我試過的。 感謝特定號碼的通話記錄
public class CallLogs extends Activity {
TextView tv,tv2;
//ListView lv;
//SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call_logs);
tv=(TextView)findViewById(R.id.textView1);
tv2=(TextView)findViewById(R.id.textView2);
//lv=(ListView)findViewById(R.id.listView1);
getCallDetails();
String phone = getIntent().getExtras().getString("Phone");
tv2.setText(phone);
}
private void getCallDetails() {
String phone = getIntent().getExtras().getString("Phone");
StringBuffer sb = new StringBuffer();
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
/* Query the CallLog Content Provider */
Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null,
/*CallLog.Calls.NUMBER+" = ?"*/null,/*new String[]{phone}*/null, strOrder);
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("Call Log :");
while (managedCursor.moveToNext()) {
String phNum = managedCursor.getString(number);
String callTypeCode = managedCursor.getString(type);
String strcallDate = managedCursor.getString(date);
Date callDate = new Date(Long.valueOf(strcallDate));
String callDuration = managedCursor.getString(duration);
String callType = null;
int callcode = Integer.parseInt(callTypeCode);
switch (callcode) {
case CallLog.Calls.OUTGOING_TYPE:
callType = "Outgoing";
break;
case CallLog.Calls.INCOMING_TYPE:
callType = "Incoming";
break;
case CallLog.Calls.MISSED_TYPE:
callType = "Missed";
break;
}
sb.append("Phone Number: " + phNum + " \nCall Type:"
+ callType + " \nCall Date: " + callDate
+ " \nCall duration in sec : " + callDuration);
sb.append("\n--------------------------");
// adapter = new SimpleCursorAdapter(this,R.layout.custcontview,managedCursor,new String[]{"NUMBER","TYPE","DATE","DURATION"},new int[] {R.id.ccontNo,R.id.ccontName,R.id.ccontType,R.id.textView1});
}
tv.setText(sb);
// lv.setAdapter(adapter);
// managedCursor.close();
}
}
我修改了這一行 光標managedCursor = getContentResolver()查詢(CallLog .Calls.CONTENT_URI,null,CallLog.Calls.NUMBER +「=?」,new String [] {phone},strOrder); 但得到此錯誤(logcat): 01-16 03:35:56.782:E/AndroidRuntime(824):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.econtact/com.example.econtact .CallLogs}:java.lang.IllegalArgumentException:索引1處的綁定值爲空 01-16 03:35:56.782:E/AndroidRuntime(824):\t at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180 ) – radhe12
「綁定值」顯然是指您插入到query()中的選擇的selectionArgs。如果這樣的selArgs值爲空, –
可能您的「strOrder」爲空或「phone」爲空 –