折腾:
【未解决】rcsjta的core出错:FATAL EXCEPTION main android.os.FileUriExposedException file exposed beyond app through Intent.getData()
期间,调试core期间,点击保存,遇到另外的错误:
D/View: [Warning] assignParent to null: this = android.widget.LinearLayout{a0c8df0 V.E...... ......ID 0,0-880,162}
W/InputEventReceiver: Slow Input: took 118ms in dispatching, now at finishInputEvent (MotionEvent: event_seq=5, seq=39535, action=ACTION_UP)
V/[RCS][Provisioning]: Save provisioning
V/[RCS][StackProvisioning]: persistRcsSettings
V/[RCS][ProfileProvisioning]: persistRcsSettings
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.gsma.rcs, PID: 16077
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.gsma.rcs.utils.ContactUtil$PhoneNumber.getNumber()' on a null object reference
at com.gsma.rcs.utils.ContactUtil.createContactIdFromValidatedData(ContactUtil.java:128)
at com.gsma.rcs.provisioning.local.ProvisioningHelper.saveContactIdEditText(ProvisioningHelper.java:90)
at com.gsma.rcs.provisioning.local.ProfileProvisioning.persistRcsSettings(ProfileProvisioning.java:144)
at com.gsma.rcs.provisioning.local.Provisioning.onOptionsItemSelected(Provisioning.java:168)
at android.app.Activity.onMenuItemSelected(Activity.java:3608)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:198)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:107)
at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:671)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:817)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:156)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:964)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:954)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:624)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:157)
at android.view.View.performClick(View.java:6614)
at android.view.View.performClickInternal(View.java:6587)
at android.view.View.access$3100(View.java:787)
at android.view.View$PerformClick.run(View.java:26122)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6831)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:927)
E/MQSEventManagerDelegate: failed to get MQSService.
代码是:
src/com/gsma/rcs/utils/ContactUtil.java
/**
* Creates a ContactId from a validated phone number
*
* @param phoneNumber the validated phone number
* @return the Contact Identifier
*/
public static ContactId createContactIdFromValidatedData(PhoneNumber phoneNumber) {
synchronized (ContactUtil.class) {
if (mContactUtil == null) {
mContactUtil = com.gsma.services.rcs.contact.ContactUtil.getInstance(AndroidFactory
.getApplicationContext());
}
}
try {
return mContactUtil.formatContact(phoneNumber.getNumber());
} catch (RcsPermissionDeniedException e) {
/*
* This exception cannot occur since PhoneNumber can only be instantiated for valid
* numbers.
*/
String errorMessage = "Phone number '" + phoneNumber
+ "' cannot be converted into contactId!";
throw new IllegalStateException(errorMessage, e);
}
}看起来是:
获取手机号失败了?
那去找找代码逻辑。
number是前面传入的
src/com/gsma/rcs/provisioning/local/ProvisioningHelper.java
public void saveContactIdEditText(int resViewTextId, String settingsKey) {
EditText txt = (EditText) mRootView.findViewById(resViewTextId);
String text = txt.getText().toString();
ContactUtil.PhoneNumber number = ContactUtil.getValidPhoneNumberFromUri(text);
if (number == null) {
txt.setText("");
}
mRcsSettings.writeContactId(settingsKey,
"".equals(text) ? null : ContactUtil.createContactIdFromValidatedData(number));
}去研究看看第一就:
EditText txt = (EditText) mRootView.findViewById(resViewTextId);
此处返回的值如何
然后此处运行不到断点,无法调试。
再去想其他办法
再去找找相关代码逻辑
后记:
【未解决】通过调试rcsjta中core的入口Provisioning去寻找服务启动的逻辑
期间,可以调试到一些断点了
包括 点击保存后,最终触发运行到了上面的
com.gsma.rcs.provisioning.local.Provisioning.onOptionsItemSelected
的部分,所以继续调试看看
【记录】调试rcsjta的core的apk点击保存按钮触发Provisioning的onOptionsItemSelected相关代码调用逻辑
转载请注明:在路上 » 【未解决】rcsjta的core出错:java.lang.NullPointerException Attempt to invoke virtual method java.lang.String com.gsma.rcs.utils.ContactUtil PhoneNumber.getNumber on a null object reference