号簿助手 v4.6.31版本的 MD5 值为:9d7ff98a6bb5cc178eac2df4d1b2f0e0

以下内容为反编译后的 MyQRCodeActivity.java 源代码,内容仅作参考


package com.chinatelecom.pim.activity.setting;

import android.annotation.TargetApi;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.PopupWindow;
import com.chinatelecom.pim.PimApplication;
import com.chinatelecom.pim.R;
import com.chinatelecom.pim.activity.setting.namecard.nfc.TutorialActivity;
import com.chinatelecom.pim.core.CoreManagerFactory;
import com.chinatelecom.pim.core.IConstant;
import com.chinatelecom.pim.core.manager.PreferenceKeyManager;
import com.chinatelecom.pim.core.manager.QrcodeManager;
import com.chinatelecom.pim.core.manager.SyncAndroidDeviceManager;
import com.chinatelecom.pim.core.threadpool.BackgroundJob;
import com.chinatelecom.pim.core.threadpool.model.Runner;
import com.chinatelecom.pim.core.utils.IntentFactory;
import com.chinatelecom.pim.core.view.ActivityView;
import com.chinatelecom.pim.foundation.common.model.sync.SyncResponse;
import com.chinatelecom.pim.foundation.lang.model.NameCard;
import com.chinatelecom.pim.foundation.lang.model.Theme;
import com.chinatelecom.pim.foundation.lang.model.contact.Contact;
import com.chinatelecom.pim.foundation.lang.net.Connection;
import com.chinatelecom.pim.foundation.lang.utils.DeviceUtils;
import com.chinatelecom.pim.foundation.lang.utils.ImageUtils;
import com.chinatelecom.pim.foundation.lang.utils.ToastTool;
import com.chinatelecom.pim.ui.adapter.setting.MyQRCodeAdapter;
import com.chinatelecom.pim.ui.view.MiddleViewDropdownView;
import com.chinatelecom.pim.ui.view.dialog.CustomAlertDialogView;
import com.chinatelecom.pim.ui.view.dialog.DialogFactory;
import com.google.zxing.WriterException;
import ctuab.proto.message.IsopenMycardShareProto;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class MyQRCodeActivity extends ActivityView<MyQRCodeAdapter> {
    private static ArrayList<String> colorList;
    private MyQRCodeAdapter adapter;
    private boolean isNotify;
    public MiddleViewDropdownView middleViewDropdownView;
    public String sharedUrl;
    public String staticFileName;
    private ToastTool toastTool;
    private QrcodeManager qrcodeManager = CoreManagerFactory.getInstance().getQrcodeManager();
    private PreferenceKeyManager preferenceKeyManager = CoreManagerFactory.getInstance().getPreferenceKeyManager();
    private final String[] shareTexts = {"微信", "易信", "QQ", "短信", "邮箱", "更多"};
    private final int[] shareImgs = {R.drawable.ic_share_weichat, R.drawable.ic_share_yixin, R.drawable.ic_share_qq, R.drawable.ic_share_msg, R.drawable.ic_share_email, R.drawable.ic_share_more};
    private ShareNameCardListener shareNameCardListener = new ShareNameCardListener();
    public String qrcodeFileName = "mycardpic.jpg";
    private SyncAndroidDeviceManager syncAndroidDeviceManager = CoreManagerFactory.getInstance().getSyncAndroidDeviceManager();

    @Override
    public MyQRCodeAdapter initializeAdapter() {
        this.adapter = new MyQRCodeAdapter(this, null);
        this.toastTool = ToastTool.getToast(this);
        return this.adapter;
    }

    @Override
    public void doCreate(Bundle bundle, MyQRCodeAdapter adapter) {
        adapter.setup();
        adapter.setTheme(new Theme());
        adapter.initAllView();
        setUpListener(adapter);
        colorList = new ArrayList<>();
        colorList.add("#000000");
        colorList.add("#ff0000");
        colorList.add("#fe8828");
        colorList.add("#f8c713");
        colorList.add("#159846");
        colorList.add("#1ba1e6");
        colorList.add("#0f69b2");
        colorList.add("#911482");
        Boolean aBoolean = this.preferenceKeyManager.getMyCardSharedSetting().myCardSharedURL().get();
        if (!aBoolean.booleanValue()) {
            Intent intent = new Intent(this, (Class<?>) TutorialActivity.class);
            intent.putExtra(IConstant.Params.FROM, IConstant.Extra.FROM_NAMECARD_QRCODE);
            startActivity(intent);
        }
    }

    @Override
    public void doResume(MyQRCodeAdapter adapter) {
        super.doResume((MyQRCodeActivity) adapter);
        adapter.getModel().getHeaderView().getLayout().getBackground().setAlpha(255);
        if (!adapter.getPagerAdapter().getState() && this.isNotify) {
            adapter.initLiveCode();
            this.isNotify = false;
        }
    }

    @TargetApi(9)
    private void setUpListener(final MyQRCodeAdapter adapter) {
        adapter.getModel().getHeaderView().getLeftView().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MyQRCodeActivity.this.finish();
            }
        });
        adapter.getModel().getHeaderView().getRightView().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (MyQRCodeActivity.this.middleViewDropdownView != null) {
                    MyQRCodeActivity.this.middleViewDropdownView.dismiss();
                }
                MyQRCodeActivity.this.middleViewDropdownView = new MiddleViewDropdownView(MyQRCodeActivity.this, adapter.getModel().getHeaderView().getRightView(), false, false, false);
                MyQRCodeActivity.this.middleViewDropdownView.appendChild(0, "发送给好友", new View.OnClickListener() {
                    @Override
                    public void onClick(View view2) {
                        MyQRCodeActivity.this.middleViewDropdownView.dismiss();
                        if (DeviceUtils.networkIsConnected(adapter.getActivity())) {
                            MyQRCodeActivity.this.sendToFriend(adapter);
                        } else {
                            MyQRCodeActivity.this.toastTool.showMessage("无可用网络连接,请检查网络");
                        }
                    }
                });
                MyQRCodeActivity.this.middleViewDropdownView.appendChild(0, "更换样式", new View.OnClickListener() {
                    @Override
                    public void onClick(View view2) {
                        MyQRCodeActivity.this.middleViewDropdownView.dismiss();
                        int i = PimApplication.colorPosition + 1;
                        PimApplication.colorPosition = i;
                        PimApplication.colorPosition = i % 8;
                        adapter.getPagerAdapter().setColor(Color.parseColor((String) MyQRCodeActivity.colorList.get(PimApplication.colorPosition)));
                        adapter.getPagerAdapter().notifyDataSetChanged();
                    }
                });
                MyQRCodeActivity.this.middleViewDropdownView.appendChild(0, "关于二维码", new View.OnClickListener() {
                    @Override
                    public void onClick(View view2) {
                        MyQRCodeActivity.this.middleViewDropdownView.dismiss();
                        Intent intent = new Intent(MyQRCodeActivity.this, (Class<?>) WebViewActivity.class);
                        intent.putExtra(IConstant.Intent.INTENT_WEB_URL, "http://219.143.33.51/sharehelp/backintime.html");
                        intent.putExtra(IConstant.Intent.INTENT_WEB_TITLE, "关于二维码");
                        MyQRCodeActivity.this.startActivity(intent);
                    }
                });
                MyQRCodeActivity.this.middleViewDropdownView.setOnDismissListener(new PopupWindow.OnDismissListener() {
                    @Override
                    public void onDismiss() {
                    }
                });
                MyQRCodeActivity.this.middleViewDropdownView.popupWindwShowing(MiddleViewDropdownView.Position.BOTTOM_CENTER_PUBLIC);
            }
        });
        adapter.getModel().getBtnStatic().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                adapter.clickStatic();
                adapter.initStaticCode(false);
            }
        });
        adapter.getModel().getBtnLive().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                adapter.clickLive();
                adapter.initLiveCode();
            }
        });
        adapter.getModel().getQRCodeViewPager().addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {
            }

            @Override
            public void onPageSelected(int i) {
                adapter.setPagePosition(i);
                adapter.updateDot(adapter.getNameCards());
                ArrayList<NameCard> nameCards = adapter.getNameCards();
                if (i == 0) {
                    adapter.getModel().getQRCodeLeftArrow().setVisibility(4);
                }
                if (i == nameCards.size() - 1) {
                    adapter.getModel().getQRCodeRightArrow().setVisibility(4);
                }
                if (i > 0 && i < nameCards.size() - 1) {
                    adapter.getModel().getQRCodeLeftArrow().setVisibility(0);
                    adapter.getModel().getQRCodeRightArrow().setVisibility(0);
                }
            }

            @Override
            public void onPageScrollStateChanged(int i) {
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        this.adapter.getPagerAdapter().notifyDataSetChanged();
    }

    public void sendToFriend(final MyQRCodeAdapter adapter) {
        if (adapter.getPagerAdapter().getState()) {
            ArrayList<NameCard> list = adapter.getNameCards();
            if (list == null) {
                list = adapter.getPagerAdapter().getDate();
            }
            if (list != null) {
                try {
                    Contact contact = list.get(adapter.getPagePosition()).getContact();
                    int color = adapter.getPagerAdapter().getColor();
                    Bitmap bitmap1 = this.qrcodeManager.cretaeBitmap(contact, BitmapFactory.decodeResource(getResources(), R.drawable.pim_logo), color);
                    final Bitmap bitmap = this.qrcodeManager.createBitmapWhitebg(bitmap1);
                    final Dialog loadingDialog = DialogFactory.createLoadingDialog(this);
                    loadingDialog.show();
                    Runner runner = new Runner(new BackgroundJob() {
                        @Override
                        public void prepare(Runner.Info info) {
                        }

                        @Override
                        public Object run(Runner.Info info) {
                            MyQRCodeActivity.this.staticFileName = ImageUtils.saveCroppedImage(bitmap, "" + adapter.getPagePosition() + ".jpg");
                            return null;
                        }

                        @Override
                        public void onComplete(Runner.Info info, Object result) {
                            loadingDialog.dismiss();
                            Intent it = new Intent("android.intent.action.SEND");
                            it.setType("image/jpg");
                            List<Intent> targetedShareIntents = new ArrayList<>();
                            Intent shareIntent = new Intent();
                            shareIntent.setAction("android.intent.action.SEND");
                            shareIntent.putExtra("android.intent.extra.TEXT", "这是我的二维码名片,扫一扫就可以保存我的联系方式哦!");
                            shareIntent.setType("image/jpg");
                            shareIntent.addFlags(1);
                            shareIntent.putExtra("android.intent.extra.STREAM", Uri.fromFile(new File(MyQRCodeActivity.this.staticFileName)));
                            targetedShareIntents.add(shareIntent);
                            Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "二维码分享");
                            if (chooserIntent != null) {
                                chooserIntent.putExtra("android.intent.extra.INITIAL_INTENTS", (Parcelable[]) targetedShareIntents.toArray(new Parcelable[0]));
                                try {
                                    MyQRCodeActivity.this.startActivity(chooserIntent);
                                } catch (ActivityNotFoundException e) {
                                }
                            }
                        }
                    });
                    runner.execute();
                    return;
                } catch (WriterException e) {
                    e.printStackTrace();
                    return;
                }
            }
            return;
        }
        if (!Connection.checkConnection(this)) {
            this.toastTool.showMessage("无可用网络连接,请检查网络.");
        } else {
            Runner runner2 = new Runner(new BackgroundJob() {
                public SyncResponse<IsopenMycardShareProto.IsOpenMycardShareResponse> contactShareResponse;

                @Override
                public void prepare(Runner.Info info) {
                }

                @Override
                public Object run(Runner.Info info) {
                    this.contactShareResponse = MyQRCodeActivity.this.syncAndroidDeviceManager.getIsOpenMyCardShareResponse(MyQRCodeActivity.this.preferenceKeyManager.getAccountSettings().syncAccount().get().key, MyQRCodeActivity.this.adapter.getNameCards().get(MyQRCodeActivity.this.adapter.getPagePosition()).getContact().getNameCardId());
                    return null;
                }

                @Override
                public void onComplete(Runner.Info info, Object resulst) {
                    if (this.contactShareResponse != null && this.contactShareResponse.getBody() != null) {
                        int isopenMycard = this.contactShareResponse.getBody().getIsopenMycard();
                        if (isopenMycard == 0) {
                            MyQRCodeActivity.this.toastTool.showMessage("请先创建云名片");
                            return;
                        }
                        MyQRCodeActivity.this.sharedUrl = this.contactShareResponse.getBody().getCardSidShareUrl();
                        CustomAlertDialogView.Builder builder = new CustomAlertDialogView.Builder(MyQRCodeActivity.this);
                        builder.setTitle((CharSequence) "选择分享方式");
                        builder.setImageListItems(MyQRCodeActivity.this.shareTexts, MyQRCodeActivity.this.shareImgs, MyQRCodeActivity.this.shareNameCardListener);
                        Dialog dialog = builder.create();
                        dialog.setCancelable(true);
                        dialog.show();
                    }
                }
            });
            runner2.execute();
        }
    }

    public void setIsNotify(boolean isNotify) {
        this.isNotify = isNotify;
    }

    private class ShareNameCardListener implements DialogInterface.OnClickListener {
        public ShareNameCardListener() {
        }

        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
            switch (which) {
                case 0:
                    MyQRCodeActivity.this.initShareIntent("com.tencent.mm");
                    return;
                case 1:
                    MyQRCodeActivity.this.initShareIntent("yixin");
                    return;
                case 2:
                    MyQRCodeActivity.this.initShareIntent("tencent.mobileqq");
                    return;
                case 3:
                    MyQRCodeActivity.this.adapter.getActivity().startActivity(IntentFactory.createSendSystemSMSIntent("【号簿助手】你的好友" + MyQRCodeActivity.this.adapter.getNameCards().get(MyQRCodeActivity.this.adapter.getPagePosition()).getContact().getDisplayName() + "给你分享了名片,请访问" + MyQRCodeActivity.this.sharedUrl + " 进行查看。温馨提示:请认准号簿助手官方网址pim.189.cn ,勿轻信其他链接。"));
                    return;
                case 4:
                    MyQRCodeActivity.this.adapter.getActivity().startActivity(IntentFactory.createSendEmailIntent(null, "【号簿助手】你的好友" + MyQRCodeActivity.this.adapter.getNameCards().get(MyQRCodeActivity.this.adapter.getPagePosition()).getContact().getDisplayName() + "给你分享了名片,请访问" + MyQRCodeActivity.this.sharedUrl + " 进行查看。温馨提示:请认准号簿助手官方网址pim.189.cn ,勿轻信其他链接。"));
                    return;
                case 5:
                    MyQRCodeActivity.this.adapter.getActivity().startActivity(IntentFactory.createShareIntent("【号簿助手】你的好友" + MyQRCodeActivity.this.adapter.getNameCards().get(MyQRCodeActivity.this.adapter.getPagePosition()).getContact().getDisplayName() + "给你分享了名片,请访问" + MyQRCodeActivity.this.sharedUrl + " 进行查看。温馨提示:请认准号簿助手官方网址pim.189.cn ,勿轻信其他链接。"));
                    return;
                default:
                    return;
            }
        }
    }

    public void initShareIntent(String type) {
        boolean found = false;
        Intent share = new Intent("android.intent.action.SEND");
        share.setType("text/plain");
        List<ResolveInfo> resInfo = this.adapter.getActivity().getPackageManager().queryIntentActivities(share, 0);
        if (!resInfo.isEmpty()) {
            for (ResolveInfo info : resInfo) {
                if (info.activityInfo.packageName.toLowerCase().contains(type) || info.activityInfo.name.toLowerCase().contains(type)) {
                    share.putExtra("android.intent.extra.TEXT", "【号簿助手】你的好友" + this.adapter.getNameCards().get(this.adapter.getPagePosition()).getContact().getDisplayName() + "给你分享了名片,请访问" + this.sharedUrl + " 进行查看。温馨提示:请认准号簿助手官方网址pim.189.cn ,勿轻信其他链接。");
                    share.setPackage(info.activityInfo.packageName);
                    found = true;
                    break;
                }
            }
            if (!found) {
                this.toastTool.showMessage("未安装相关应用,请选择其他分享方式");
            } else {
                startActivity(Intent.createChooser(share, "复制链接到"));
            }
        }
    }
}