package pdj.agree; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.TextPaint; import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.text.style.AbsoluteSizeSpan; import android.text.style.ClickableSpan; import android.text.style.ForegroundColorSpan; import android.text.style.StyleSpan; import android.util.DisplayMetrics; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import base.utils.DeviceInfoUtils; import base.utils.UiTools; import com.google.gson.Gson; import com.jingdong.pdj.jddjcommonlib.R; import java.util.List; import jd.MyInfoUtil; import jd.app.JDApplication; import jd.config.ConfigSystemHelper; import jd.uicomponents.buttoncomponet.DJButtonHelper; import jd.uicomponents.buttoncomponet.DJButtonView; import jd.utils.ColorTools; import jd.utils.DPIUtil; import jd.utils.SharePersistentUtils; import jd.utils.TextUtil; import pdj.menu.bean.Conceal; import pdj.menu.bean.HomeConceal; import pdj.menu.bean.HomeConcealResult; public class ConcealDialog extends Dialog { private DJButtonView btnno; private DJButtonView btnyes; public OnConcealListener concealListener; private Context context; private DJButtonHelper helper; private DJButtonHelper helper1; HomeConceal homeConceal; int maxHeight; int maxWidth; LinearLayout myLinearLayout; boolean privatePopShowConceal = false; private TextView tvHint; private TextView tvTitle; final Window window = getWindow(); public interface OnConcealListener { void onCancel(); void onConfirm(); } public ConcealDialog(Context context2, View view) { super(context2, R.style.dj_dialog); this.context = context2; setContentView(view); Window window2 = this.window; if (window2 != null) { WindowManager windowManager = window2.getWindowManager(); windowManager.getDefaultDisplay().getMetrics(new DisplayMetrics()); Activity activity = (Activity) context2; int screenWidth = DeviceInfoUtils.getScreenWidth(activity); int screenHeight = DeviceInfoUtils.getScreenHeight(activity); this.maxWidth = (int) (((double) screenWidth) * 0.8d); this.maxHeight = (int) (((double) screenHeight) * 0.8d); this.window.setWindowAnimations(R.style.dj_dialog_animation); this.window.setLayout(this.maxWidth, this.maxHeight); } assignViews(view); } public void setPrivatePopShowConceal(boolean z) { this.privatePopShowConceal = z; } private void assignViews(View view) { this.myLinearLayout = (LinearLayout) view.findViewById(com.example.appmain.R.id.myLinearLayout); this.tvTitle = (TextView) view.findViewById(com.example.appmain.R.id.title); this.tvHint = (TextView) view.findViewById(com.example.appmain.R.id.tvHint); this.btnyes = (DJButtonView) view.findViewById(com.example.appmain.R.id.btnyes); this.btnno = (DJButtonView) view.findViewById(com.example.appmain.R.id.btnno); this.btnyes.initWithStyle(DJButtonView.DJBtnStyle_fullround_solid_normal); this.btnno.initWithStyle(DJButtonView.DJBtnStyle_fullround_solid_normal); this.helper = new DJButtonHelper.Builder().setDefaultColor(MyInfoUtil.COLOR_TAG_BG).setTextColor(-1).setText("同意").setTextSize(16).setStartColor(-16725218).setEndColor(-16728524).setCornerRadius(UiTools.dip2px(20.0f)).builder(); this.btnyes.build(this.helper); this.helper1 = new DJButtonHelper.Builder().setDefaultColor(-1).setTextColor(-10066330).setPressColor(-1).setText("不同意").setTextSize(16).setCornerRadius(UiTools.dip2px(20.0f)).builder(); this.btnno.build(this.helper1); } public void setData() { if (!this.privatePopShowConceal) { this.tvHint.setText(createSpannable()); } else if (!TextUtils.isEmpty(SharePersistentUtils.getStringWithValue(JDApplication.getInstance().getApplicationContext(), ConfigSystemHelper.PRIVATEPOPVALUE, ""))) { this.homeConceal = ((HomeConcealResult) new Gson().fromJson(SharePersistentUtils.getStringWithValue(JDApplication.getInstance().getApplicationContext(), ConfigSystemHelper.PRIVATEPOPVALUE, ""), HomeConcealResult.class)).getResult(); this.tvTitle.setText(this.homeConceal.getTitle()); this.tvHint.setText(createSpannableForCms(this.homeConceal.getContent())); } else { this.tvHint.setText(createSpannable()); } this.tvHint.setMovementMethod(LinkMovementMethod.getInstance()); this.btnyes.setOnClickListener(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass1 */ public void onClick(View view) { if (ConcealDialog.this.concealListener != null) { ConcealDialog.this.concealListener.onConfirm(); } } }); this.btnno.setOnClickListener(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass2 */ public void onClick(View view) { if (ConcealDialog.this.concealListener != null) { ConcealDialog.this.concealListener.onCancel(); } } }); } private SpannableStringBuilder createSpannableForCms(List<Conceal> list) { StringBuilder sb = new StringBuilder(""); SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); StringBuilder sb2 = new StringBuilder(""); for (Conceal conceal : list) { sb2.append(conceal.getDesc()); if (conceal.isLineBreak()) { sb2.append("\n"); } } SpannableString spannableString = new SpannableString(sb2); for (final Conceal conceal2 : list) { int length = sb.length(); sb.append(conceal2.getDesc()); if (conceal2.isLineBreak()) { sb.append("\n"); } int length2 = conceal2.getDesc().length() + length; if (conceal2.isTextBold()) { spannableString.setSpan(new StyleSpan(1), length, length2, 33); } else { spannableString.setSpan(new StyleSpan(0), length, length2, 33); } if (TextUtils.isEmpty(conceal2.getTextColor())) { spannableString.setSpan(new ForegroundColorSpan(ColorTools.parseColor("#47b34f")), length, length2, 18); } else { spannableString.setSpan(new ForegroundColorSpan(ColorTools.parseColor(conceal2.getTextColor())), length, length2, 18); } spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass3 */ public void onClick(View view) { Conceal conceal = conceal2; if (conceal != null && !TextUtil.isEmpty(conceal.getLink())) { ConcealDialog.this.setWebUrl(conceal2.getLink()); } } }), length, length2, 33); } spannableString.setSpan(new AbsoluteSizeSpan(DPIUtil.dp2px(16.0f)), 0, sb.length(), 17); spannableStringBuilder.append((CharSequence) spannableString); return spannableStringBuilder; } private SpannableStringBuilder createSpannable() { int indexOf = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《京东到家平台服务协议》"); int i = indexOf + 12; SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); SpannableString spannableString = new SpannableString(" 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。"); spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf, i, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass4 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=95"); } }), indexOf, i, 33); int indexOf2 = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《京东到家隐私政策》"); int i2 = indexOf2 + 10; spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf2, i2, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass5 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=11"); } }), indexOf2, i2, 33); int indexOf3 = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《敏感个人信息处理授权协议》"); int i3 = indexOf3 + 14; spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf3, i3, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass6 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=87"); } }), indexOf3, i3, 33); int indexOf4 = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《个人信息共享授权协议》"); int i4 = indexOf4 + 12; spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf4, i4, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass7 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=88"); } }), indexOf4, i4, 33); int indexOf5 = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《个人信息收集清单》"); int i5 = indexOf5 + 10; spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf5, i5, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass8 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=96"); } }), indexOf5, i5, 33); int indexOf6 = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《应用权限说明》"); int i6 = indexOf6 + 8; spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf6, i6, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass9 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=97"); } }), indexOf6, i6, 33); int indexOf7 = " 请您了解,您需要满18周岁并注册成为京东到家用户后方可使用本软件的网上购物功能,在您注册前您仍然可以浏览本软件中的商品和服务内容(关于注册,您可参考《京东到家平台服务协议》)。\n 为了更好地保护您的权益,我们制定了《京东到家隐私政策》、《敏感个人信息处理授权协议》及《个人信息共享授权协议》,特向您说明如下:\n 1、为了您更便捷地浏览或搜索,我们会根据您的授权内容,收集和使用对应的必要信息。收集的场景及数据清单您可查阅《个人信息收集清单》。\n 2、为了给您提供便捷的系统操作环境及对应的服务,我们会向您申请隐私权限的授权,并根据您的授权,收集和使用您的个人信息。您可以选择拒绝授权申请,一旦拒绝,我们将不会基于对应权限收集和使用相关个人信息,但我们将无法为您提供该权限所对应的服务,您将无法使用该权限对应的功能。收集的场景及数据您可查阅《应用权限说明》。\n 3、为了完成您订单的支付、配送或售后,我们可能会收集使用您订单中的信息,相关必要信息可能需要共享给平台内店铺、支付、物流等第三方合作方。同时,为了保障平台相关功能的实现与应用的稳定运行,我们会接入由第三方提供的软件开发包(SDK)以实现相关目的。共享的场景及数据清单、SDK数据获取场景及相关信息您可查询《个人信息共享清单》。\n 4、您可以对上述信息进行访问、更正、删除以及注销账户,我们也将提供个人信息保护联系方式。\n 请您认真阅读并充分理解,如您同意前述内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。".indexOf("《个人信息共享清单》"); int i7 = indexOf7 + 10; spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#47b34f")), indexOf7, i7, 18); spannableString.setSpan(new Clickable(new View.OnClickListener() { /* class pdj.agree.ConcealDialog.AnonymousClass10 */ public void onClick(View view) { ConcealDialog.this.setWebUrl("https://daojia.jd.com/html/agreementApp.html?type=98"); } }), indexOf7, i7, 33); spannableString.setSpan(new AbsoluteSizeSpan(DPIUtil.dp2px(16.0f)), 0, 700, 17); spannableStringBuilder.append((CharSequence) spannableString); return spannableStringBuilder; } /* access modifiers changed from: package-private */ public class Clickable extends ClickableSpan implements View.OnClickListener { private final View.OnClickListener mListener; public void updateDrawState(TextPaint textPaint) { } public Clickable(View.OnClickListener onClickListener) { this.mListener = onClickListener; } public void onClick(View view) { this.mListener.onClick(view); } } public void setConcealListener(OnConcealListener onConcealListener) { this.concealListener = onConcealListener; } /* access modifiers changed from: private */ /* access modifiers changed from: public */ private void setWebUrl(String str) { try { Uri parse = Uri.parse(str); Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.setData(parse); this.context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } }