08-02 16:16:05.448 2309 2978 D HeadsetStateMachine: handleMessage: E msg.what=101
08-02 16:16:05.449 2309 2978 D HeadsetStateMachine: processMsg: Connected
08-02 16:16:05.450 2309 2978 D HeadsetStateMachine: Connected: currentDevice=1C:52:16:03:02:5A, msg=STACK_EVENT: EVENT_TYPE_DIAL_CALL[7], valInt=0, valInt2=0, valString=null, valObject=null, device=1C:52:16:03:02:5A
08-02 16:16:05.485 3651 3674 E DatabaseUtils: Writing exception to parcel
08-02 16:16:05.485 3651 3674 E DatabaseUtils: java.lang.IllegalArgumentException: Invalid token LIMIT
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.SQLiteQueryBuilder.enforceStrictToken(SQLiteQueryBuilder.java:824)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.SQLiteQueryBuilder.lambda$W2yQ6UjYGqGIu6HEomKgdgvGNKI(Unknown Source:0)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.-$$Lambda$SQLiteQueryBuilder$W2yQ6UjYGqGIu6HEomKgdgvGNKI.accept(Unknown Source:4)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.SQLiteTokenizer.tokenize(SQLiteTokenizer.java:108)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.SQLiteQueryBuilder.enforceStrictGrammar(SQLiteQueryBuilder.java:794)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:557)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:502)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at com.android.providers.contacts.CallLogProvider.queryInternal(CallLogProvider.java:378)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at com.android.providers.contacts.CallLogProvider.query(CallLogProvider.java:305)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.content.ContentProvider.query(ContentProvider.java:1379)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.content.ContentProvider.query(ContentProvider.java:1475)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.content.ContentProvider$Transport.query(ContentProvider.java:278)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:106)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.os.Binder.execTransactInternal(Binder.java:1159)
08-02 16:16:05.485 3651 3674 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:1123)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: Exception while querying last dialled number
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: java.lang.IllegalArgumentException: Invalid token LIMIT
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.content.ContentResolver.query(ContentResolver.java:1185)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.content.ContentResolver.query(ContentResolver.java:1116)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.content.ContentResolver.query(ContentResolver.java:1072)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.bluetooth.hfp.AtPhonebook.getLastDialledNumber(AtPhonebook.java:141)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.bluetooth.hfp.HeadsetStateMachine.processDialCall(HeadsetStateMachine.java:1981)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.bluetooth.hfp.HeadsetStateMachine.access$4000(HeadsetStateMachine.java:86)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.bluetooth.hfp.HeadsetStateMachine$ConnectedBase.processMessage(HeadsetStateMachine.java:1245)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.bluetooth.hfp.HeadsetStateMachine$Connected.processMessage(HeadsetStateMachine.java:1452)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.internal.util.StateMachine$SmHandler.processMsg(StateMachine.java:992)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at com.android.internal.util.StateMachine$SmHandler.handleMessage(StateMachine.java:809)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.os.Handler.dispatchMessage(Handler.java:106)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.os.Looper.loop(Looper.java:223)
08-02 16:16:05.487 2309 2978 E BluetoothAtPhonebook: at android.os.HandlerThread.run(HandlerThread.java:67)
08-02 16:16:05.488 2309 2978 D HeadsetStateMachine: dialNumber: null
08-02 16:16:05.488 2309 2978 W HeadsetStateMachine: processDialCall, last dial number null or empty
修改方案:
--- a/vendor/qcom/opensource/commonsys/packages/apps/Bluetooth/src/com/android/bluetooth/hfp/AtPhonebook.java
+++ b/vendor/qcom/opensource/commonsys/packages/apps/Bluetooth/src/com/android/bluetooth/hfp/AtPhonebook.java
@@ -22,6 +22,9 @@ import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
+//<!--jicong.wang modify for bug 25385
+import android.provider.CallLog;
+//jicong.wang modify for bug 25385-->
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -137,12 +140,21 @@ public class AtPhonebook {
/** Returns the last dialled number, or null if no numbers have been called */
public String getLastDialledNumber() {
String[] projection = {Calls.NUMBER};
+ //<!--jicong.wang modify for bug 25385
+ Uri uri = Calls.CONTENT_URI.buildUpon().appendQueryParameter(Calls.LIMIT_PARAM_KEY,"1").build();
+ //jicong.wang modify for bug 25385 -->
try {
- Cursor cursor = mContentResolver.query(Calls.CONTENT_URI, projection,
+ //<!--jicong.wang modify for bug 25385
+ /*Cursor cursor = mContentResolver.query(Calls.CONTENT_URI, projection,
Calls.TYPE + " = " + Calls.OUTGOING_TYPE + " OR " + Calls.TYPE +
" = " + OUTGOING_IMS_TYPE + " OR " + Calls.TYPE + " = " +
OUTGOING_WIFI_TYPE, null, Calls.DEFAULT_SORT_ORDER +
- " LIMIT 1");
+ " LIMIT 1");*/
+ Cursor cursor = mContentResolver.query(uri, projection,
+ Calls.TYPE + " = " + Calls.OUTGOING_TYPE + " OR " + Calls.TYPE +
+ " = " + OUTGOING_IMS_TYPE + " OR " + Calls.TYPE + " = " +
+ OUTGOING_WIFI_TYPE, null,Calls.DEFAULT_SORT_ORDER);
+ //jicong.wang modify for bug 25385 -->
log("Queried the last dialled number for CS, IMS, WIFI calls");
if (cursor == null) {
Log.w(TAG, "getLastDialledNumber, cursor is null");