号簿助手 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, "复制链接到"));
}
}
}
}