IllegalargumentException reagexceptionfromparcel
-
27-10-2019 - |
質問
ユーザーの1人からこのエラーが発生しましたが、それを修正する方法がわかりません...
java.lang.illegalargumentexception databaseutils.readexceptionfromparcel()
java.lang.IllegalArgumentException: URI: content://com.android.contacts/phone_lookup/, calling user: com.piroja.contactpicker, calling package:com.piroja.contactpicker at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:144)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:245)
at com.piroja.contactpicker.ContactPicker.contactExists(ContactPicker.java:257)
at com.piroja.contactpicker.ContactPicker$6$1.onClick(ContactPicker.java:138)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
at dalvik.system.NativeStart.main(Native Method)
これは、私が呼んでいるcontactexistsファンシオンです(私は思う)。
public boolean contactExists(Context context, String number) {
try {
Uri lookupUri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri
.encode(number));
String[] mPhoneNumberProjection = { Phone._ID, Phone.NUMBER,
Phone.DISPLAY_NAME };
Cursor cur = context.getContentResolver().query(lookupUri,
mPhoneNumberProjection, null, null, null);
try {
if (cur.moveToFirst()) {
return true;
}
} finally {
if (cur != null)
cur.close();
}
} catch (IllegalArgumentException iae) {
return false;
}
return false;
}
また、phone.content_filter_uriをphonelookup.content_filter_uriに変更しようとしましたが、何も変更しませんでした...誰かが手がかりを持っていますか?
解決
電話クエリURIが問題になっています。例外テキストから、電話番号が欠落しているように見えます。数字は無効であり、空でもないと確信していますか?
他のヒント
これは、マスクされた番号で発生する可能性があります。http://code.google.com/p/gtalksms/issues/detail?id=27
誰かがまだこの答えを必要としているかどうかはわかりませんが、私はそれを手に入れるまで試みました。問題は、時々、入ってくる数が null
どちらかを拡張するとき PhoneStateListener
クラス、または最後の着信番号を渡すとき。コードをこれに変更しましたが、うまくいきました
@Override
public void onReceive(final Context context, final Intent intent) {
Log.d("APP", "ACTION:" + intent.getAction());
final String stringExtra = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_RINGING.equals(stringExtra)) {
final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("APP", "incoming,ringing:" + incomingNumber);
} else if (stringExtra.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("APP", "hanged" + incomingNumber );
} else if (stringExtra.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("APP", "answered" + incomingNumber );
}
}
…このソリューションはです ここ.
所属していません StackOverflow