合并20250520_122311_006
This commit is contained in:
		| @@ -29,7 +29,7 @@ android { | ||||
|         // versionName 更新后需要手动设置  | ||||
|         // 项目模块目录的 build.gradle 文件的 stageCount=0 | ||||
|         // Gradle编译环境下合起来的 versionName 就是 "${versionName}.0" | ||||
|         versionName "15.2"  | ||||
|         versionName "15.3"  | ||||
|         if(true) { | ||||
|             versionName = genVersionName("${versionName}") | ||||
|         } | ||||
| @@ -45,6 +45,9 @@ android { | ||||
|  | ||||
| dependencies { | ||||
|     api fileTree(dir: 'libs', include: ['*.jar']) | ||||
|     api 'cc.winboll.studio:libaes:15.6.0' | ||||
|     api 'cc.winboll.studio:libapputils:15.3.4' | ||||
|     api 'cc.winboll.studio:libappbase:15.7.6' | ||||
|      | ||||
|     // 权限请求框架:https://github.com/getActivity/XXPermissions | ||||
|     api 'com.github.getActivity:XXPermissions:18.63' | ||||
| @@ -81,8 +84,4 @@ dependencies { | ||||
|     //api 'androidx.vectordrawable:vectordrawable:1.1.0' | ||||
|     //api 'androidx.vectordrawable:vectordrawable-animated:1.1.0' | ||||
|     //api 'androidx.fragment:fragment:1.1.0' | ||||
|      | ||||
|     api 'cc.winboll.studio:libaes:15.2.4' | ||||
|     api 'cc.winboll.studio:libapputils:15.2.1' | ||||
|     api 'cc.winboll.studio:libappbase:15.2.2' | ||||
| } | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Sun Apr 13 02:46:09 HKT 2025 | ||||
| stageCount=8 | ||||
| #Mon May 05 03:56:16 HKT 2025 | ||||
| stageCount=2 | ||||
| libraryProject= | ||||
| baseVersion=15.2 | ||||
| publishVersion=15.2.7 | ||||
| baseVersion=15.3 | ||||
| publishVersion=15.3.1 | ||||
| buildCount=0 | ||||
| baseBetaVersion=15.2.8 | ||||
| baseBetaVersion=15.3.2 | ||||
|   | ||||
| @@ -42,7 +42,8 @@ | ||||
|         android:icon="@drawable/ic_winboll" | ||||
|         android:label="@string/app_name" | ||||
|         android:theme="@style/MyAppTheme" | ||||
|         android:supportsRtl="true"> | ||||
|         android:supportsRtl="true" | ||||
|         android:networkSecurityConfig="@xml/network_security_config"> | ||||
|  | ||||
|         <activity | ||||
|             android:name=".MainActivity" | ||||
|   | ||||
| @@ -7,7 +7,7 @@ package cc.winboll.studio.contacts; | ||||
|  */ | ||||
| import android.view.Gravity; | ||||
| import cc.winboll.studio.libappbase.GlobalApplication; | ||||
| import cc.winboll.studio.libappbase.winboll.WinBollActivityManager; | ||||
| import cc.winboll.studio.libappbase.winboll.WinBoLLActivityManager; | ||||
| import com.hjq.toast.ToastUtils; | ||||
|  | ||||
| public class App extends GlobalApplication { | ||||
| @@ -20,8 +20,8 @@ public class App extends GlobalApplication { | ||||
|         // 这样可以预先设置日志与数据的存储根目录。 | ||||
|         //setIsDebuging(BuildConfig.DEBUG); | ||||
|         super.onCreate(); | ||||
|         // 设置 WinBoll 应用 UI 类型 | ||||
|         WinBollActivityManager.getInstance(this).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Aplication); | ||||
|         // 设置 WinBoLL 应用 UI 类型 | ||||
|         getWinBoLLActivityManager().setWinBoLLUI_TYPE(WinBoLLActivityManager.WinBoLLUI_TYPE.Aplication); | ||||
|          | ||||
|         //LogUtils.d(TAG, "onCreate"); | ||||
|          | ||||
|   | ||||
| @@ -32,22 +32,21 @@ import cc.winboll.studio.contacts.fragments.CallLogFragment; | ||||
| import cc.winboll.studio.contacts.fragments.ContactsFragment; | ||||
| import cc.winboll.studio.contacts.fragments.LogFragment; | ||||
| import cc.winboll.studio.contacts.services.MainService; | ||||
| import cc.winboll.studio.libaes.winboll.APPInfo; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| import cc.winboll.studio.libappbase.LogView; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBollActivity; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity; | ||||
| import com.google.android.material.tabs.TabLayout; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| final public class MainActivity extends AppCompatActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener { | ||||
| final public class MainActivity extends AppCompatActivity implements IWinBoLLActivity, ViewPager.OnPageChangeListener, View.OnClickListener { | ||||
|  | ||||
| 	public static final String TAG = "MainActivity"; | ||||
|  | ||||
|     public static final int REQUEST_HOME_ACTIVITY = 0; | ||||
|     public static final int REQUEST_ABOUT_ACTIVITY = 1; | ||||
|  | ||||
|     public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS"; | ||||
|     public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoLL.ACTION_SOS"; | ||||
|  | ||||
|     static MainActivity _MainActivity; | ||||
|     LogView mLogView; | ||||
| @@ -71,10 +70,10 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
|  | ||||
|     private static final int DIALER_REQUEST_CODE = 1; | ||||
|  | ||||
|     @Override | ||||
|     public Activity getActivity() { | ||||
|         return this; | ||||
|     } | ||||
| //    @Override | ||||
| //    public Activity getActivity() { | ||||
| //        return this; | ||||
| //    } | ||||
|  | ||||
| //    @Override | ||||
| //    public APPInfo getAppInfo() { | ||||
| @@ -95,6 +94,17 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
| //        return null; | ||||
| //    } | ||||
|  | ||||
|  | ||||
|     @Override | ||||
|     public Activity getActivity() { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String getTag() { | ||||
|         return TAG; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         // 接收并处理 Intent 数据,函数 Intent 处理接收就直接返回 | ||||
| @@ -111,7 +121,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
| //            // 显示后退按钮 | ||||
| //            getSupportActionBar().setDisplayHomeAsUpEnabled(true); | ||||
| //        } | ||||
|         getSupportActionBar().setSubtitle(getTag()); | ||||
|         getSupportActionBar().setSubtitle(TAG); | ||||
|  | ||||
|         tabLayout = findViewById(R.id.tabLayout); | ||||
|         viewPager = findViewById(R.id.viewPager); | ||||
| @@ -339,7 +349,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
| // | ||||
| //        if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) { | ||||
| //            try { | ||||
| //                WinBollActivity clazzActivity = UnitTestActivity.class.newInstance(); | ||||
| //                WinBoLLActivity clazzActivity = UnitTestActivity.class.newInstance(); | ||||
| //                String tag = clazzActivity.getTag(); | ||||
| //                LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag); | ||||
| //                Intent subIntent = new Intent(this, UnitTestActivity.class); | ||||
| @@ -357,8 +367,8 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
| //                } | ||||
| // | ||||
| //                Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath())); | ||||
| //                //startWinBollActivity(subIntent, tag); | ||||
| //                WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class); | ||||
| //                //startWinBoLLActivity(subIntent, tag); | ||||
| //                WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, subIntent, UnitTestActivity.class); | ||||
| //            } catch (IllegalAccessException | InstantiationException | IOException e) { | ||||
| //                LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); | ||||
| //                // 函数处理异常返回失败 | ||||
| @@ -371,10 +381,10 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
| //        return true; | ||||
| //    } | ||||
|  | ||||
|     @Override | ||||
|     public String getTag() { | ||||
|         return TAG; | ||||
|     } | ||||
| //    @Override | ||||
| //    public String getTag() { | ||||
| //        return TAG; | ||||
| //    } | ||||
|  | ||||
| //    @Override | ||||
| //    public void onBackPressed() { | ||||
| @@ -386,7 +396,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
| // | ||||
| //            @Override | ||||
| //            public void onYes() { | ||||
| //                WinBollActivityManager.getInstance(getApplicationContext()).finishAll(); | ||||
| //                WinBoLLActivityManager.getInstance(getApplicationContext()).finishAll(); | ||||
| //            } | ||||
| // | ||||
| //            @Override | ||||
| @@ -408,7 +418,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct | ||||
|         if (item.getItemId() == R.id.item_settings) { | ||||
|             Intent intent = new Intent(this, SettingsActivity.class); | ||||
|             startActivity(intent); | ||||
|             //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); | ||||
|             //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, CallActivity.class); | ||||
|         } | ||||
| //        } else  | ||||
| //        if (item.getItemId() == R.id.item_exit) { | ||||
|   | ||||
| @@ -10,14 +10,15 @@ import android.content.Context; | ||||
| import android.os.Bundle; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.LinearLayout; | ||||
| import androidx.appcompat.app.AppCompatActivity; | ||||
| import androidx.appcompat.widget.Toolbar; | ||||
| import cc.winboll.studio.contacts.R; | ||||
| import cc.winboll.studio.libaes.winboll.APPInfo; | ||||
| import cc.winboll.studio.libaes.winboll.AboutView; | ||||
| import cc.winboll.studio.libappbase.GlobalApplication; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBollActivity; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity; | ||||
|  | ||||
| public class AboutActivity extends WinBollActivity implements IWinBollActivity { | ||||
| public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity { | ||||
|  | ||||
|     public static final String TAG = "AboutActivity"; | ||||
|  | ||||
| @@ -64,13 +65,13 @@ public class AboutActivity extends WinBollActivity implements IWinBollActivity { | ||||
|         ); | ||||
|         layout.addView(aboutView, params); | ||||
|  | ||||
|         GlobalApplication.getWinBollActivityManager().add(this); | ||||
|         GlobalApplication.getWinBoLLActivityManager().add(this); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void onDestroy() { | ||||
|         super.onDestroy(); | ||||
|         GlobalApplication.getWinBollActivityManager().registeRemove(this); | ||||
|         GlobalApplication.getWinBoLLActivityManager().registeRemove(this); | ||||
|     } | ||||
|  | ||||
|     public AboutView CreateAboutView() { | ||||
|   | ||||
| @@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity; | ||||
| import androidx.appcompat.widget.Toolbar; | ||||
| import androidx.recyclerview.widget.LinearLayoutManager; | ||||
| import androidx.recyclerview.widget.RecyclerView; | ||||
| import cc.winboll.studio.contacts.App; | ||||
| import cc.winboll.studio.contacts.R; | ||||
| import cc.winboll.studio.contacts.adapters.PhoneConnectRuleAdapter; | ||||
| import cc.winboll.studio.contacts.beans.MainServiceBean; | ||||
| @@ -34,15 +35,13 @@ import cc.winboll.studio.contacts.bobulltoon.TomCat; | ||||
| import cc.winboll.studio.contacts.dun.Rules; | ||||
| import cc.winboll.studio.contacts.services.MainService; | ||||
| import cc.winboll.studio.contacts.views.DuInfoTextView; | ||||
| import cc.winboll.studio.libaes.winboll.APPInfo; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBollActivity; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity; | ||||
| import com.hjq.toast.ToastUtils; | ||||
| import java.lang.reflect.Field; | ||||
| import java.util.List; | ||||
| import cc.winboll.studio.contacts.App; | ||||
|  | ||||
| public class SettingsActivity extends AppCompatActivity implements IWinBollActivity { | ||||
| public class SettingsActivity extends AppCompatActivity implements IWinBoLLActivity { | ||||
|  | ||||
|     public static final String TAG = "SettingsActivity"; | ||||
|  | ||||
| @@ -177,6 +176,8 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv | ||||
|         etDunResumeSecondCount.setEnabled(!isEnableDun); | ||||
|         etDunResumeCount.setEnabled(!isEnableDun); | ||||
|  | ||||
|         EditText etBoBullToonURL = findViewById(R.id.bobulltoonurl_et); | ||||
|         etBoBullToonURL.setText(Rules.getInstance(this).getBoBullToonURL()); | ||||
|     } | ||||
|  | ||||
|     public static void notifyDunInfoUpdate() { | ||||
| @@ -201,6 +202,11 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv | ||||
|         settingsModel.setIsEnableDun(isEnableDun); | ||||
|         Rules.getInstance(this).saveDun(); | ||||
|         Rules.getInstance(this).reload(); | ||||
|          | ||||
|         // 重新加载盾牌参数 | ||||
|         etDunTotalCount.setText(Integer.toString(settingsModel.getDunTotalCount())); | ||||
|         etDunResumeSecondCount.setText(Integer.toString(settingsModel.getDunResumeSecondCount())); | ||||
|         etDunResumeCount.setText(Integer.toString(settingsModel.getDunResumeCount())); | ||||
|     } | ||||
|  | ||||
|     void updateStreamVolumeTextView() { | ||||
| @@ -233,7 +239,18 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void onResetBoBullToonURL(View view) { | ||||
|         Rules.getInstance(this).resetDefaultBoBullToonURL(); | ||||
|         EditText etBoBullToonURL = findViewById(R.id.bobulltoonurl_et); | ||||
|         etBoBullToonURL.setText(Rules.getInstance(this).getBoBullToonURL()); | ||||
|     } | ||||
|  | ||||
|     public void onDownloadBoBullToon(View view) { | ||||
|         EditText etBoBullToonURL = findViewById(R.id.bobulltoonurl_et); | ||||
|         if (!etBoBullToonURL.getText().toString().trim().equals(Rules.getInstance(this).getBoBullToonURL())) { | ||||
|             Rules.getInstance(this).setBoBullToonURL(etBoBullToonURL.getText().toString().trim()); | ||||
|         } | ||||
|  | ||||
|         final TomCat tomCat = TomCat.getInstance(this); | ||||
|         new Thread(new Runnable() { | ||||
|                 @Override | ||||
| @@ -247,8 +264,6 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv | ||||
|             }).start(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     public void onSearchBoBullToonPhone(View view) { | ||||
|         TomCat tomCat = TomCat.getInstance(this); | ||||
|         EditText etPhone = findViewById(R.id.activitysettingsEditText1); | ||||
| @@ -313,6 +328,6 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv | ||||
|     } | ||||
|  | ||||
|     public void onAbout(View view) { | ||||
|         App.getWinBollActivityManager().startWinBollActivity(this, AboutActivity.class); | ||||
|         App.getWinBoLLActivityManager().startWinBoLLActivity(this, AboutActivity.class); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -14,6 +14,7 @@ import cc.winboll.studio.contacts.utils.IntUtils; | ||||
| public class SettingsModel extends BaseBean { | ||||
|  | ||||
|     public static final String TAG = "SettingsModel"; | ||||
|      | ||||
|     public static final int MAX_INTRANGE = 666666; | ||||
|     public static final int MIN_INTRANGE = 1; | ||||
|      | ||||
| @@ -27,6 +28,8 @@ public class SettingsModel extends BaseBean { | ||||
|     int dunResumeCount; | ||||
|     // 是否启用云盾 | ||||
|     boolean isEnableDun; | ||||
|     // BoBullToon 应用模块数据请求地址 | ||||
|     String szBoBullToon_URL; | ||||
|  | ||||
|     public SettingsModel() { | ||||
|         this.dunTotalCount = 6; | ||||
| @@ -34,14 +37,24 @@ public class SettingsModel extends BaseBean { | ||||
|         this.dunResumeSecondCount = 60; | ||||
|         this.dunResumeCount = 1; | ||||
|         this.isEnableDun = false; | ||||
|         this.szBoBullToon_URL = ""; | ||||
|     } | ||||
|  | ||||
|     public SettingsModel(int dunTotalCount, int dunCurrentCount, int dunResumeSecondCount, int dunResumeCount, boolean isEnableDun) { | ||||
|     public SettingsModel(int dunTotalCount, int dunCurrentCount, int dunResumeSecondCount, int dunResumeCount, boolean isEnableDun, String szBoBullToon_URL) { | ||||
|         this.dunTotalCount = getSettingsModelRangeInt(dunTotalCount); | ||||
|         this.dunCurrentCount = getSettingsModelRangeInt(dunCurrentCount); | ||||
|         this.dunResumeSecondCount = getSettingsModelRangeInt(dunResumeSecondCount); | ||||
|         this.dunResumeCount = getSettingsModelRangeInt(dunResumeCount); | ||||
|         this.isEnableDun = isEnableDun; | ||||
|         this.szBoBullToon_URL = szBoBullToon_URL; | ||||
|     } | ||||
|  | ||||
|     public void setBoBullToon_URL(String boBullToon_URL) { | ||||
|         this.szBoBullToon_URL = boBullToon_URL; | ||||
|     } | ||||
|  | ||||
|     public String getBoBullToon_URL() { | ||||
|         return szBoBullToon_URL; | ||||
|     } | ||||
|  | ||||
|     public void setDunTotalCount(int dunTotalCount) { | ||||
| @@ -102,6 +115,7 @@ public class SettingsModel extends BaseBean { | ||||
|         jsonWriter.name("dunResumeSecondCount").value(getDunResumeSecondCount()); | ||||
|         jsonWriter.name("dunResumeCount").value(getDunResumeCount()); | ||||
|         jsonWriter.name("isEnableDun").value(isEnableDun()); | ||||
|         jsonWriter.name("szBoBullToon_URL").value(getBoBullToon_URL()); | ||||
|          | ||||
|     } | ||||
|  | ||||
| @@ -118,6 +132,8 @@ public class SettingsModel extends BaseBean { | ||||
|                 setDunResumeCount(getSettingsModelRangeInt(jsonReader.nextInt())); | ||||
|             } else if (name.equals("isEnableDun")) { | ||||
|                 setIsEnableDun(jsonReader.nextBoolean()); | ||||
|             } else if (name.equals("szBoBullToon_URL")) { | ||||
|                 setBoBullToon_URL(jsonReader.nextString()); | ||||
|             } else { | ||||
|                 return false; | ||||
|             } | ||||
|   | ||||
| @@ -6,6 +6,8 @@ package cc.winboll.studio.contacts.bobulltoon; | ||||
|  * @Describe 汤姆猫管家 :使用 BoBullToon 项目,对通讯地址进行筛选判断的好朋友。 | ||||
|  */ | ||||
| import android.content.Context; | ||||
| import cc.winboll.studio.contacts.R; | ||||
| import cc.winboll.studio.contacts.dun.Rules; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| import com.hjq.toast.ToastUtils; | ||||
| import java.io.File; | ||||
| @@ -28,6 +30,7 @@ public class TomCat { | ||||
|     public static final String TAG = "TomCat"; | ||||
|  | ||||
|     List<String> listPhoneBoBullToon = new ArrayList<String>(); | ||||
|     String mszBoBullToon_URL; | ||||
|  | ||||
|     static volatile TomCat _TomCat; | ||||
|     Context mContext; | ||||
| @@ -42,7 +45,11 @@ public class TomCat { | ||||
|         return _TomCat; | ||||
|     } | ||||
|      | ||||
|     void downloadAndExtractZip(String zipUrl, String destinationFolder) throws IOException { | ||||
|     public String getDefaultBobulltoonUrl() { | ||||
|         return mContext.getString(R.string.default_bobulltoon_url); | ||||
|     } | ||||
|  | ||||
|     boolean downloadAndExtractZip(String zipUrl, String destinationFolder) throws IOException { | ||||
|         OkHttpClient client = new OkHttpClient(); | ||||
|         Request request = new Request.Builder() | ||||
|             .url(zipUrl) | ||||
| @@ -95,13 +102,16 @@ public class TomCat { | ||||
|             // 删除临时 ZIP 文件 | ||||
|             tempZipFile.delete(); | ||||
|             LogUtils.d(TAG, "已更新 BoBullToon 数据"); | ||||
|             return true; | ||||
|         } catch (Exception e) { | ||||
|             ToastUtils.show(e.getMessage()); | ||||
|             LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public boolean downloadBoBullToon() { | ||||
|         String zipUrl = "http://10.8.0.12:3000/Studio/BoBullToon/archive/main.zip"; // 替换为实际的 ZIP 文件 URL | ||||
|         String zipUrl = Rules.getInstance(mContext).getBoBullToonURL(); // 替换为实际的 ZIP 文件 URL | ||||
|         String destinationFolder = getWorkingFolder().getPath(); // 替换为实际的目标文件夹路径 | ||||
|         try { | ||||
|             // 删除旧文件 | ||||
| @@ -113,9 +123,11 @@ public class TomCat { | ||||
|             } | ||||
|  | ||||
|             // 更新新文件 | ||||
|             downloadAndExtractZip(zipUrl, destinationFolder); | ||||
|             if(downloadAndExtractZip(zipUrl, destinationFolder)) { | ||||
|                 LogUtils.d(TAG, "ZIP 文件下载并解压成功。"); | ||||
|                 return true; | ||||
|             } | ||||
|             return false; | ||||
|         } catch (IOException e) { | ||||
|             LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); | ||||
|         } | ||||
|   | ||||
| @@ -18,6 +18,7 @@ import java.util.ArrayList; | ||||
| import java.util.Timer; | ||||
| import java.util.TimerTask; | ||||
| import java.util.regex.Pattern; | ||||
| import cc.winboll.studio.contacts.bobulltoon.TomCat; | ||||
|  | ||||
| public class Rules { | ||||
|  | ||||
| @@ -84,6 +85,20 @@ public class Rules { | ||||
|         PhoneConnectRuleModel.saveBeanList(mContext, _PhoneConnectRuleModelList, PhoneConnectRuleModel.class); | ||||
|     } | ||||
|  | ||||
|     public void resetDefaultBoBullToonURL() { | ||||
|         mSettingsModel.setBoBullToon_URL(TomCat.getInstance(mContext).getDefaultBobulltoonUrl()); | ||||
|         saveDun(); | ||||
|     } | ||||
|  | ||||
|     public void setBoBullToonURL(String szUrl) { | ||||
|         mSettingsModel.setBoBullToon_URL(szUrl); | ||||
|         saveDun(); | ||||
|     } | ||||
|  | ||||
|     public String getBoBullToonURL() { | ||||
|         return mSettingsModel.getBoBullToon_URL(); | ||||
|     } | ||||
|  | ||||
|     public void loadDun() { | ||||
|         mSettingsModel = SettingsModel.loadBean(mContext, SettingsModel.class); | ||||
|         if (mSettingsModel == null) { | ||||
| @@ -109,8 +124,12 @@ public class Rules { | ||||
|         boolean isDefend = false; // 盾牌是否生效 | ||||
|         boolean isConnect = true; // 防御结果是否连接 | ||||
|  | ||||
|         // 进行盾牌层数预计缩减计算 | ||||
|         int nDunCurrentCount = mSettingsModel.getDunCurrentCount() - 1; | ||||
|         LogUtils.d(TAG, String.format("nDunCurrentCount : %d", nDunCurrentCount)); | ||||
|  | ||||
|         // 如果盾值小于1,则解除防御 | ||||
|         if (!isDefend && mSettingsModel.getDunCurrentCount() < 1) { | ||||
|         if (!isDefend && nDunCurrentCount < 1) { | ||||
|             // 盾层为1以下,防御解除 | ||||
|             LogUtils.d(TAG, "盾层为1以下,防御解除"); | ||||
|             isDefend = true; | ||||
| @@ -174,16 +193,16 @@ public class Rules { | ||||
|             // 就减少防御盾牌层数。 | ||||
|             // 每校验一次规则,云盾防御层数减1 | ||||
|             // 当云盾防御层数为0时,再次进行以下程序段则恢复满值防御。 | ||||
|             int newDunCount = mSettingsModel.getDunCurrentCount() - 1; | ||||
|             int newDunCount = nDunCurrentCount; | ||||
|             LogUtils.d(TAG, String.format("新的防御层数预计为 %d", newDunCount)); | ||||
|  | ||||
|             // 保证盾值在[0,DunTotalCount]之内其他值一律重置为 DunTotalCount。 | ||||
|             if (newDunCount < 0 || newDunCount > mSettingsModel.getDunTotalCount()) { | ||||
|                 mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount()); | ||||
|                 LogUtils.d(TAG, String.format("盾值不在[0,%d]区间,恢复防御最大值%d", mSettingsModel.getDunTotalCount(), mSettingsModel.getDunTotalCount())); | ||||
|             } else { | ||||
|             // 保证盾值在[1,DunTotalCount]之内其他值一律重置为 DunTotalCount。 | ||||
|             if (newDunCount > 0 && newDunCount < mSettingsModel.getDunTotalCount()) { | ||||
|                 mSettingsModel.setDunCurrentCount(newDunCount); | ||||
|                 LogUtils.d(TAG, String.format("设置防御层数为 %d", newDunCount)); | ||||
|             } else { | ||||
|                 mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount()); | ||||
|                 LogUtils.d(TAG, String.format("盾值不在[0,%d]区间,恢复防御最大值%d", mSettingsModel.getDunTotalCount(), mSettingsModel.getDunTotalCount())); | ||||
|             }  | ||||
|  | ||||
|             saveDun(); | ||||
|   | ||||
| @@ -31,7 +31,7 @@ import cc.winboll.studio.libappbase.LogUtils; | ||||
| import cc.winboll.studio.libappbase.sos.SOS; | ||||
| import java.util.Timer; | ||||
| import java.util.TimerTask; | ||||
| import cc.winboll.studio.libappbase.sos.WinBoll; | ||||
| import cc.winboll.studio.libappbase.sos.WinBoLL; | ||||
| import cc.winboll.studio.contacts.App; | ||||
| import cc.winboll.studio.libappbase.sos.APPModel; | ||||
|  | ||||
| @@ -129,11 +129,11 @@ public class MainService extends Service { | ||||
|             isServiceRunning = true; | ||||
|             // 唤醒守护进程 | ||||
|             wakeupAndBindAssistant(); | ||||
|             // 召唤 WinBoll APP 绑定本服务 | ||||
|             // 召唤 WinBoLL APP 绑定本服务 | ||||
|             if (App.isDebuging()) { | ||||
|                 WinBoll.bindToAPPBaseBeta(this, MainService.class.getName()); | ||||
|                 WinBoLL.bindToAPPBaseBeta(this, MainService.class.getName()); | ||||
|             } else { | ||||
|                 WinBoll.bindToAPPBase(this, MainService.class.getName()); | ||||
|                 WinBoLL.bindToAPPBase(this, MainService.class.getName()); | ||||
|             } | ||||
|  | ||||
|             // 初始化服务运行参数 | ||||
|   | ||||
| @@ -195,16 +195,29 @@ | ||||
| 				android:text="拨不通电话记录查询:"/> | ||||
|  | ||||
| 			<LinearLayout | ||||
| 				android:orientation="vertical" | ||||
| 				android:orientation="horizontal" | ||||
| 				android:layout_width="match_parent" | ||||
| 				android:layout_height="wrap_content" | ||||
| 				android:gravity="right" | ||||
| 				android:layout_margin="10dp"> | ||||
|  | ||||
| 				<EditText | ||||
| 					android:layout_width="0dp" | ||||
| 					android:ems="10" | ||||
| 					android:layout_height="wrap_content" | ||||
| 					android:layout_weight="1.0" | ||||
| 					android:id="@+id/bobulltoonurl_et"/> | ||||
|  | ||||
| 				<Button | ||||
| 					android:layout_width="wrap_content" | ||||
| 					android:layout_height="wrap_content" | ||||
| 					android:text="下载 BoBullToon" | ||||
| 					android:text="重置地址" | ||||
| 					android:onClick="onResetBoBullToonURL"/> | ||||
|  | ||||
| 				<Button | ||||
| 					android:layout_width="wrap_content" | ||||
| 					android:layout_height="wrap_content" | ||||
| 					android:text="下载数据" | ||||
| 					android:onClick="onDownloadBoBullToon"/> | ||||
|  | ||||
| 			</LinearLayout> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <!-- WinBoll 默认方案 --> | ||||
|     <!-- WinBoLL 默认方案 --> | ||||
|     <color name="colorPrimary">#FF196ABC</color> | ||||
|     <color name="colorPrimaryDark">#FF002B57</color> | ||||
|     <color name="colorAccent">#FF80BFFF</color> | ||||
|   | ||||
| @@ -2,5 +2,6 @@ | ||||
| <resources> | ||||
|  | ||||
|     <string name="app_name">Contacts</string> | ||||
|     <string name="default_bobulltoon_url">http://10.8.0.12:3000/Studio/BoBullToon/archive/main.zip</string> | ||||
|  | ||||
| </resources> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <style name="MyAppTheme" parent="APPBaseTheme"> | ||||
|     <style name="MyAppTheme" parent="AESTheme"> | ||||
|         <item name="colorPrimary">@color/colorPrimary</item> | ||||
|         <item name="colorPrimaryDark">@color/colorPrimaryDark</item> | ||||
|         <item name="colorAccent">@color/colorAccent</item> | ||||
| @@ -8,7 +8,7 @@ | ||||
|         <item name="android:windowContentOverlay">@null</item> | ||||
|     </style> | ||||
|  | ||||
|     <style name="GlobalCrashActivityTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> | ||||
|     <style name="GlobalCrashActivityTheme" parent="AESTheme"> | ||||
|         <item name="colorTittle">@color/colorAccent</item> | ||||
|         <item name="colorTittleBackgound">@color/colorPrimary</item> | ||||
|         <item name="colorText">@color/colorAccent</item> | ||||
|   | ||||
							
								
								
									
										9
									
								
								contacts/src/main/res/xml/network_security_config.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								contacts/src/main/res/xml/network_security_config.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <network-security-config> | ||||
|     <domain-config cleartextTrafficPermitted="true"> | ||||
|         <domain includeSubdomains="true">winboll.cc</domain> | ||||
|     </domain-config> | ||||
|     <domain-config cleartextTrafficPermitted="true"> | ||||
|         <domain includeSubdomains="false">10.8.0.12</domain> | ||||
|     </domain-config> | ||||
| </network-security-config> | ||||
		Reference in New Issue
	
	Block a user
	 ZhanGSKen
					ZhanGSKen