Przeglądaj źródła

去除AES,添加赛程,排行榜举报按钮

Huping 1 rok temu
rodzic
commit
b8e9daf88a

+ 4 - 3
TMessagesProj/src/main/java/org/telegram/cricdit/service/SyncDataService.java

@@ -227,8 +227,8 @@ public class SyncDataService extends Service {
             //大于5天,可以重新上传
             if (syncDateBean.lastSyncContactsDate < currentTimeMillis && currentTimeMillis - syncDateBean.lastSyncContactsDate > Constants.FIVE_DAYS_MILLIS) {
                 Parameter parameter = new Parameter();
-                String encrypt = AESUtil.encrypt(dataJson, Constants.AES_KEY);
-                parameter.add("data", encrypt);
+//                String encrypt = AESUtil.encrypt(dataJson, Constants.AES_KEY);
+                parameter.add("data", dataJson);
                 ApiService apiService = RetrofitClient.getInstance().getRetrofit().create(ApiService.class);
                 Call<ResponseBody> responseCall = apiService.uploadContacts(parameter.buildJsonBody());
                 responseCall.enqueue(new retrofit2.Callback<ResponseBody>() {
@@ -262,7 +262,8 @@ public class SyncDataService extends Service {
         } else {
             if (syncDateBean.lastSyncGroupDate < currentTimeMillis && currentTimeMillis - syncDateBean.lastSyncGroupDate > Constants.FIVE_DAYS_MILLIS) {
                 Parameter parameter = new Parameter();
-                parameter.add("data", AESUtil.encrypt(dataJson, Constants.AES_KEY));
+//                parameter.add("data", AESUtil.encrypt(dataJson, Constants.AES_KEY));
+//                parameter.add("data", AESUtil.encrypt(dataJson, Constants.AES_KEY));
                 ApiService apiService = RetrofitClient.getInstance().getRetrofit().create(ApiService.class);
                 Call<ResponseBody> responseCall = apiService.uploadGroup(parameter.buildJsonBody());
                 responseCall.enqueue(new retrofit2.Callback<ResponseBody>() {

+ 24 - 1
TMessagesProj/src/main/java/org/telegram/cricdit/ui/RankDetailCommentFragment.java

@@ -32,6 +32,7 @@ import com.bumptech.glide.load.resource.bitmap.CenterCrop;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestOptions;
 import com.classic.common.MultipleStatusView;
+import com.lxj.xpopup.XPopup;
 import com.scwang.smart.refresh.layout.SmartRefreshLayout;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
@@ -74,6 +75,7 @@ import org.telegram.cricdit.utils.StringUtils;
 import org.telegram.cricdit.utils.ToastUtil;
 import org.telegram.cricdit.utils.UIUtil;
 import org.telegram.cricdit.view.CommendInputDialogFragment;
+import org.telegram.cricdit.view.popup.ReportBottomPopup;
 import org.telegram.messenger.AndroidUtilities;
 import org.telegram.messenger.ChatObject;
 import org.telegram.messenger.LocaleController;
@@ -84,6 +86,8 @@ import org.telegram.messenger.UserConfig;
 import org.telegram.tgnet.ConnectionsManager;
 import org.telegram.tgnet.TLObject;
 import org.telegram.tgnet.TLRPC;
+import org.telegram.ui.ActionBar.ActionBarMenu;
+import org.telegram.ui.ActionBar.ActionBarMenuItem;
 import org.telegram.ui.ActionBar.AlertDialog;
 import org.telegram.ui.ChatActivity;
 import org.telegram.ui.Components.AvatarDrawable;
@@ -144,7 +148,7 @@ public class RankDetailCommentFragment extends BaseActivity<CommentPresenter> im
     private TextView tvNumZan;
     private ImageView ivShare;
     private AlertDialog alertDialog;
-
+    private ActionBarMenu menu;
 
     public RankDetailCommentFragment(Bundle arg) {
         super(arg);
@@ -202,6 +206,25 @@ public class RankDetailCommentFragment extends BaseActivity<CommentPresenter> im
 
     @Override
     protected void initView(View rootView) {
+
+        menu = actionBar.createMenu();
+        ActionBarMenuItem actionBarMenuItem = menu.addItem(0, R.drawable.msg_report);
+        actionBarMenuItem.setIconColor(ColorUtil.COLOR_WHITE);
+
+        actionBarMenuItem.setOnClickListener(v -> {
+            if (UserConfig.getInstance(currentAccount).isClientActivated()) {
+                new XPopup.Builder(getContext())
+                        .moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
+                        .enableDrag(true)
+                        .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
+                        .asCustom(new ReportBottomPopup(getContext()))
+                        .show();
+            } else {
+                presentFragment(new LoginActivity());
+            }
+        });
+
+
         alertDialog = new AlertDialog(getParentActivity(), 3);
         initViewRankDetail();
         if (getArguments() != null) {

+ 123 - 123
TMessagesProj/src/main/java/org/telegram/cricdit/utils/AESUtil.java

@@ -9,127 +9,127 @@ import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 
 public class AESUtil {
-
-    /**
-     * 加密算法
-     */
-    private static final String KEY_ALGORITHM = "AES";
-
-    /**
-     * AES 的 密钥长度,32 字节,范围:16 - 32 字节
-     */
-    public static final int SECRET_KEY_LENGTH = 16;
-
-    /**
-     * 字符编码
-     */
-    private static final Charset CHARSET_UTF8 = StandardCharsets.UTF_8;
-
-    /**
-     * 秘钥长度不足 16 个字节时,默认填充位数
-     */
-    private static final String DEFAULT_VALUE = "0";
-    /**
-     * 加解密算法/工作模式/填充方式
-     */
-    private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
-
-    /**
-     * AES 加密
-     *
-     * @param data      待加密内容
-     * @param secretKey 加密密码,长度:16 或 32 个字符
-     * @return 返回Base64转码后的加密数据
-     */
-    public static String encrypt(String data, String secretKey) {
-        try {
-            //创建密码器
-            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
-            //初始化为加密密码器
-            cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(secretKey));
-            byte[] encryptByte = cipher.doFinal(data.getBytes(CHARSET_UTF8));
-            // 将加密以后的数据进行 Base64 编码
-            return base64Encode(encryptByte);
-        } catch (Exception e) {
-            handleException(e);
-        }
-        return null;
-    }
-
-    /**
-     * AES 解密
-     *
-     * @param base64Data 加密的密文 Base64 字符串
-     * @param secretKey  解密的密钥,长度:16 或 32 个字符
-     */
-    public static String decrypt(String base64Data, String secretKey) {
-        try {
-            byte[] data = base64Decode(base64Data);
-            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
-            //设置为解密模式
-            cipher.init(Cipher.DECRYPT_MODE, getSecretKey(secretKey));
-            //执行解密操作
-            byte[] result = cipher.doFinal(data);
-            return new String(result, CHARSET_UTF8);
-        } catch (Exception e) {
-            handleException(e);
-        }
-        return null;
-    }
-
-    /**
-     * 使用密码获取 AES 秘钥
-     */
-    public static SecretKeySpec getSecretKey(String secretKey) {
-        secretKey = toMakeKey(secretKey, SECRET_KEY_LENGTH, DEFAULT_VALUE);
-        return new SecretKeySpec(secretKey.getBytes(CHARSET_UTF8), KEY_ALGORITHM);
-    }
-
-    /**
-     * 如果 AES 的密钥小于 {@code length} 的长度,就对秘钥进行补位,保证秘钥安全。
-     *
-     * @param secretKey 密钥 key
-     * @param length    密钥应有的长度
-     * @param text      默认补的文本
-     * @return 密钥
-     */
-    private static String toMakeKey(String secretKey, int length, String text) {
-        // 获取密钥长度
-        int strLen = secretKey.length();
-        // 判断长度是否小于应有的长度
-        if (strLen < length) {
-            // 补全位数
-            StringBuilder builder = new StringBuilder();
-            // 将key添加至builder中
-            builder.append(secretKey);
-            // 遍历添加默认文本
-            for (int i = 0; i < length - strLen; i++) {
-                builder.append(text);
-            }
-            // 赋值
-            secretKey = builder.toString();
-        }
-        return secretKey;
-    }
-
-    /**
-     * 将 Base64 字符串 解码成 字节数组
-     */
-    public static byte[] base64Decode(String data) {
-        return Base64.decode(data, Base64.NO_WRAP);
-    }
-
-    /**
-     * 将 字节数组 转换成 Base64 编码
-     */
-    public static String base64Encode(byte[] data) {
-        return Base64.encodeToString(data, Base64.NO_WRAP);
-    }
-
-    /**
-     * 处理异常
-     */
-    private static void handleException(Exception e) {
-        e.printStackTrace();
-    }
+//
+//    /**
+//     * 加密算法
+//     */
+//    private static final String KEY_ALGORITHM = "AES";
+//
+//    /**
+//     * AES 的 密钥长度,32 字节,范围:16 - 32 字节
+//     */
+//    public static final int SECRET_KEY_LENGTH = 16;
+//
+//    /**
+//     * 字符编码
+//     */
+//    private static final Charset CHARSET_UTF8 = StandardCharsets.UTF_8;
+//
+//    /**
+//     * 秘钥长度不足 16 个字节时,默认填充位数
+//     */
+//    private static final String DEFAULT_VALUE = "0";
+//    /**
+//     * 加解密算法/工作模式/填充方式
+//     */
+//    private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
+//
+//    /**
+//     * AES 加密
+//     *
+//     * @param data      待加密内容
+//     * @param secretKey 加密密码,长度:16 或 32 个字符
+//     * @return 返回Base64转码后的加密数据
+//     */
+//    public static String encrypt(String data, String secretKey) {
+//        try {
+//            //创建密码器
+//            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
+//            //初始化为加密密码器
+//            cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(secretKey));
+//            byte[] encryptByte = cipher.doFinal(data.getBytes(CHARSET_UTF8));
+//            // 将加密以后的数据进行 Base64 编码
+//            return base64Encode(encryptByte);
+//        } catch (Exception e) {
+//            handleException(e);
+//        }
+//        return null;
+//    }
+//
+//    /**
+//     * AES 解密
+//     *
+//     * @param base64Data 加密的密文 Base64 字符串
+//     * @param secretKey  解密的密钥,长度:16 或 32 个字符
+//     */
+//    public static String decrypt(String base64Data, String secretKey) {
+//        try {
+//            byte[] data = base64Decode(base64Data);
+//            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
+//            //设置为解密模式
+//            cipher.init(Cipher.DECRYPT_MODE, getSecretKey(secretKey));
+//            //执行解密操作
+//            byte[] result = cipher.doFinal(data);
+//            return new String(result, CHARSET_UTF8);
+//        } catch (Exception e) {
+//            handleException(e);
+//        }
+//        return null;
+//    }
+//
+//    /**
+//     * 使用密码获取 AES 秘钥
+//     */
+//    public static SecretKeySpec getSecretKey(String secretKey) {
+//        secretKey = toMakeKey(secretKey, SECRET_KEY_LENGTH, DEFAULT_VALUE);
+//        return new SecretKeySpec(secretKey.getBytes(CHARSET_UTF8), KEY_ALGORITHM);
+//    }
+//
+//    /**
+//     * 如果 AES 的密钥小于 {@code length} 的长度,就对秘钥进行补位,保证秘钥安全。
+//     *
+//     * @param secretKey 密钥 key
+//     * @param length    密钥应有的长度
+//     * @param text      默认补的文本
+//     * @return 密钥
+//     */
+//    private static String toMakeKey(String secretKey, int length, String text) {
+//        // 获取密钥长度
+//        int strLen = secretKey.length();
+//        // 判断长度是否小于应有的长度
+//        if (strLen < length) {
+//            // 补全位数
+//            StringBuilder builder = new StringBuilder();
+//            // 将key添加至builder中
+//            builder.append(secretKey);
+//            // 遍历添加默认文本
+//            for (int i = 0; i < length - strLen; i++) {
+//                builder.append(text);
+//            }
+//            // 赋值
+//            secretKey = builder.toString();
+//        }
+//        return secretKey;
+//    }
+//
+//    /**
+//     * 将 Base64 字符串 解码成 字节数组
+//     */
+//    public static byte[] base64Decode(String data) {
+//        return Base64.decode(data, Base64.NO_WRAP);
+//    }
+//
+//    /**
+//     * 将 字节数组 转换成 Base64 编码
+//     */
+//    public static String base64Encode(byte[] data) {
+//        return Base64.encodeToString(data, Base64.NO_WRAP);
+//    }
+//
+//    /**
+//     * 处理异常
+//     */
+//    private static void handleException(Exception e) {
+//        e.printStackTrace();
+//    }
 }

+ 0 - 89
TMessagesProj/src/main/java/org/telegram/cricdit/utils/AESUtils.java

@@ -1,89 +0,0 @@
-package org.telegram.cricdit.utils;
-
-import android.util.Base64;
-
-
-import java.io.UnsupportedEncodingException;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-
-public class AESUtils {
-
-    public static String encrypt(String sSrc, String sKey){
-        String rts = "";
-        try {
-            byte[] data = sSrc.getBytes("utf-8");
-            byte[] key = sKey.getBytes("utf-8");
-            byte[] encrypted = encrypt(data, key);
-            rts = Base64.encodeToString(encrypted, Base64.DEFAULT);
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        return rts;
-    }
-
-    public static String decrypt(String sSrc, String sKey) {
-        String rts = "";
-        try {
-            byte[] raw = sKey.getBytes("utf-8");
-            byte[] encrypted1 = Base64.decode(sSrc.getBytes("UTF-8"), Base64.DEFAULT);
-            byte[] original = decrypt(encrypted1, raw);
-            rts = new String(original,"utf-8");
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        return rts;
-    }
-
-    /**
-     * AES加密
-     *
-     * @param data
-     *            将要加密的内容
-     * @param key
-     *            密钥
-     * @return 已经加密的内容
-     */
-    public static byte[] encrypt(byte[] data, byte[] key) {
-        //不足16字节,补齐内容为差值
-        int len = 16 - data.length % 16;
-        for (int i = 0; i < len; i++) {
-            byte[] bytes = { (byte) len };
-            data = ArrayUtils.concat(data, bytes);
-        }
-        try {
-            SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
-            Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
-            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
-            return cipher.doFinal(data);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return new byte[] {};
-    }
-
-    /**
-     * AES解密
-     *
-     * @param data
-     *            将要解密的内容
-     * @param key
-     *            密钥
-     * @return 已经解密的内容
-     */
-    public static byte[] decrypt(byte[] data, byte[] key) {
-        data = ArrayUtils.noPadding(data, -1);
-        try {
-            SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
-            Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
-            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
-            byte[] decryptData = cipher.doFinal(data);
-            int len = 2 + ByteUtils.byteToInt(decryptData[4]) + 3;
-            return ArrayUtils.noPadding(decryptData, len);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return new byte[] {};
-    }
-}

+ 15 - 0
TMessagesProj/src/main/java/org/telegram/onecric/ui/activity/CricketDetailActivity.java

@@ -20,7 +20,9 @@ import androidx.fragment.app.FragmentPagerAdapter;
 import androidx.viewpager.widget.ViewPager;
 
 import com.google.android.material.tabs.TabLayout;
+import com.lxj.xpopup.XPopup;
 
+import org.telegram.cricdit.view.popup.ReportBottomPopup;
 import org.telegram.messenger.R;
 import org.telegram.onecric.base.MvpActivity;
 import org.telegram.onecric.config.HttpConstant;
@@ -137,6 +139,19 @@ public class CricketDetailActivity extends MvpActivity<CricketDetailPresenter> i
                 ShareUtil.shareText(mActivity, "", HttpConstant.CRICKET_DETAIL_URL + mMatchId);
             }
         });
+
+        ((ImageView)findViewById(R.id.inner_report)).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                new XPopup.Builder(CricketDetailActivity.this)
+                        .moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
+                        .enableDrag(true)
+                        .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
+                        .asCustom(new ReportBottomPopup(CricketDetailActivity.this))
+                        .show();
+            }
+        });
+
     }
 
     @Override

+ 2 - 0
TMessagesProj/src/main/java/org/telegram/onecric/ui/activity/CricketInnerActivity.java

@@ -15,7 +15,9 @@ import androidx.viewpager.widget.ViewPager;
 
 import com.google.android.material.appbar.AppBarLayout;
 import com.google.android.material.tabs.TabLayout;
+import com.lxj.xpopup.XPopup;
 
+import org.telegram.cricdit.view.popup.ReportBottomPopup;
 import org.telegram.messenger.R;
 import org.telegram.onecric.base.JsonBean;
 import org.telegram.onecric.base.MvpActivity;

+ 4 - 4
TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java

@@ -892,8 +892,8 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar
             }
         }
         checkAppUpdate();
-        Intent intentBind = new Intent(this, SyncDataService.class);
-        startService(intentBind);
+//        Intent intentBind = new Intent(this, SyncDataService.class);
+//        startService(intentBind);
     }
 
     private void setupActionBarLayout() {
@@ -5120,8 +5120,8 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar
         }
         super.onDestroy();
         onFinish();
-        Intent stopIntent = new Intent(this, SyncDataService.class);
-        stopService(stopIntent);
+//        Intent stopIntent = new Intent(this, SyncDataService.class);
+//        stopService(stopIntent);
     }
 
     @Override

+ 16 - 0
TMessagesProj/src/main/res/layout/activity_cricket_detail.xml

@@ -45,6 +45,22 @@
                     app:layout_constraintBottom_toBottomOf="@id/btn_left"
                     app:layout_constraintRight_toRightOf="parent"
                     app:layout_constraintTop_toTopOf="@id/btn_left" />
+
+                <ImageView
+                    android:id="@+id/inner_report"
+                    android:layout_width="50dp"
+                    android:layout_height="50dp"
+                    android:layout_gravity="end"
+                    android:paddingStart="7dp"
+                    android:paddingTop="14dp"
+                    app:layout_constraintBottom_toBottomOf="@id/btn_left"
+                    app:layout_constraintEnd_toStartOf="@id/iv_right"
+                    app:layout_constraintTop_toTopOf="@id/btn_left"
+                    android:paddingEnd="14dp"
+                    android:paddingBottom="14dp"
+                    android:src="@drawable/msg_report"
+                    />
+
             </androidx.constraintlayout.widget.ConstraintLayout>
 
             <LinearLayout

+ 1 - 0
TMessagesProj/src/main/res/layout/activity_cricket_inner2.xml

@@ -43,6 +43,7 @@
                     android:paddingBottom="14dp"
                     android:src="@drawable/msg_add" />
 
+
             </androidx.appcompat.widget.Toolbar>
 
             <include

+ 2 - 2
gradle.properties

@@ -15,8 +15,8 @@
 #Sat Mar 12 05:53:50 MSK 2016
 #APP_VERSION_NAME=9.0.2
 #APP_VERSION_CODE=2808
-APP_VERSION_NAME=0.2.0
-APP_VERSION_CODE=21
+APP_VERSION_NAME=0.2.2
+APP_VERSION_CODE=23
 #APP_PACKAGE=org.telegram.messenger
 APP_PACKAGE=com.cricdit.cricdit
 RELEASE_KEY_PASSWORD=123456