BuWanVideo/AndroidManifest.xml
@@ -69,6 +69,7 @@ android:largeHeap="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" android:debuggable="false" tools:replace="android:allowBackup"> <activity @@ -332,7 +333,7 @@ android:value="570f28a578d6e12cba6f7f200b8d1c83"></meta-data> <meta-data android:name="UMENG_CHANNEL" android:value="QQ"></meta-data> android:value="baidu"></meta-data> <provider @@ -437,12 +438,13 @@ android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity> <!-- com.doudou.ysvideo --> <activity android:name="com.doudou.ysvideo.wxapi.WXEntryActivity" android:exported="true" android:label="@string/app_name" android:launchMode="singleTop" android:taskAffinity="com.doudou.ysvideo" android:taskAffinity="" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- QQ分享 --> @@ -595,6 +597,13 @@ android:exported="false" /> <service android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService" android:label="dexopt" android:process=":dexopt" > </service> </application> </manifest> BuWanVideo/build.gradle
@@ -28,7 +28,7 @@ implementation files('libs/phoneNumber-L-AuthSDK-2.12.0.aar') //快手 implementation files('libs/kssdk-ct-3.3.27.3-publishRelease-cd62cc584-fullAbi.aar') implementation files('libs/kssdk-ct-3.3.30-publishRelease-626622d1b-fullAbi.aar') implementation 'androidx.recyclerview:recyclerview:1.0.0' @@ -132,8 +132,8 @@ defaultConfig { applicationId "com.doudou.ysvideo" versionCode 134 versionName "3.10.16" versionCode 137 versionName "3.10.19" multiDexEnabled = true minSdkVersion 17 targetSdkVersion 29 BuWanVideo/libs/kssdk-ct-3.3.27.3-publishRelease-cd62cc584-fullAbi.aarBinary files differ
BuWanVideo/libs/kssdk-ct-3.3.30-publishRelease-626622d1b-fullAbi.aarBinary files differ
BuWanVideo/libs/kssdk-ct-pure-3.3.24.6-publishRelease-db1110194-fullAbi.aarBinary files differ
BuWanVideo/src/com/funshion/video/FSCompleteDeviceInfo.java
@@ -24,6 +24,7 @@ import android.util.Log; import com.funshion.video.config.FSApp; import com.lcjian.library.util.common.DeviceUtil; import java.net.NetworkInterface; import java.text.SimpleDateFormat; @@ -538,7 +539,7 @@ public static final String getIMEI(Context var0) { String var10000; try { var10000 = ((TelephonyManager) var0.getSystemService("phone")).getDeviceId(); var10000 = DeviceUtil.getImeiCache(var0); } catch (Exception var1) { return ""; } @@ -631,7 +632,7 @@ List var10000; boolean var10001; try { var10000 = var0.getPackageManager().getInstalledPackages(0); var10000 = DeviceUtil.getInstalledPackagesCache(var0); } catch (Exception var5) { var10001 = false; return false; BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java
@@ -31,16 +31,20 @@ import com.bytedance.novel.pangolin.data.ReaderFontType; import com.bytedance.sdk.dp.DPSdk; import com.bytedance.sdk.dp.DPSdkConfig; import com.bytedance.sdk.dp.IDPPrivacyController; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.funshion.playsdk.register.IAuthCodeGetter; import com.kwad.sdk.api.KsAdSDK; import com.kwad.sdk.api.KsCustomController; import com.kwad.sdk.api.SdkConfig; import com.lcjian.library.util.ManifestDataUtil; import com.lcjian.library.util.common.DeviceUtil; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.qq.e.comm.managers.GDTAdSdk; import com.qq.e.comm.managers.setting.GlobalSetting; import com.tencent.mm.opensdk.constants.ConstantsAPI; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; @@ -57,6 +61,7 @@ import com.weikou.beibeivideo.ui.ad.SplashAdActivity; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.CrashHandler; import com.weikou.beibeivideo.util.DebuggerUtils; import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.util.ad.AdUtil; import com.weikou.beibeivideo.util.ad.CSJConstant; @@ -69,6 +74,10 @@ import org.apache.http.Header; import org.greenrobot.eventbus.EventBus; import org.json.JSONObject; import java.util.Collections; import java.util.LinkedList; import java.util.List; import androidx.multidex.MultiDex; @@ -92,6 +101,27 @@ } private static boolean inited = false; private static List<Activity> mActivitys = Collections.synchronizedList(new LinkedList<Activity>()); public static void pushActivity(Activity activity) { mActivitys.add(activity); } public static void popActivity(Activity activity) { mActivitys.remove(activity); } public static void finishAllActivity() { if (mActivitys == null) { return; } for (Activity activity : mActivitys) { activity.finish(); } mActivitys.clear(); } //兼容4.4以下版本 protected void attachBaseContext(Context newBase) { @@ -154,6 +184,7 @@ CrashHandler crashHandler = CrashHandler.getInstance(); crashHandler.init(getApplicationContext()); } application = this; instance = this; MultiDex.install(this); @@ -176,12 +207,14 @@ public static void init(final Application application, InitListener initListener) { Log.i(TAG, "系统初始化"); inited = true; registerActivityListener(application); //防止动态代码注入 DebuggerUtils.checkDebuggableInNotDebugModel(application); try { TelephonyManager manager = (TelephonyManager) application.getSystemService(TELEPHONY_SERVICE); Build bd = new Build(); String model = bd.MODEL; BeibeiVideoApplication.deviceName = model; BeibeiVideoApplication.deviceNumber = manager.getDeviceId(); BeibeiVideoApplication.deviceNumber = DeviceUtil.getImeiCache(application); } catch (Exception e) { } @@ -198,9 +231,12 @@ String description = ManifestDataUtil.getAppMetaData(application, "UMENG_CHANNEL"); try { UMConfigure.setLogEnabled(false); UMConfigure.submitPolicyGrantResult(application, false); UMConfigure.init(application, application.getResources().getString(R.string.umeng_key), description, UMConfigure.DEVICE_TYPE_PHONE, null); // 选用AUTO页面采集模式 MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO); UMConfigure.submitPolicyGrantResult(application, false); } catch (Throwable e) { } @@ -214,6 +250,7 @@ initCSJAd(application, initListener); initKSSDK(application); try { GlobalSetting.setEnableCollectAppInstallStatus(false); GDTAdSdk.init(application, BeibeiConstant.GDT_ID); } catch (Exception e) { e.printStackTrace(); @@ -293,9 +330,6 @@ }; //x5内核初始化接口 QbSdk.initX5Environment(application, cb); QbSdk.canGetDeviceId(false); QbSdk.canGetAndroidId(false); QbSdk.canGetSubscriberId(false); } @@ -328,7 +362,43 @@ .appId("801000001") // 测试aapId,请联系快⼿平台申请正式AppId,必填 .appName(appContext.getString(R.string.app_name)) // 测试appName,请填写您应⽤的名称,⾮必填 .showNotification(true) // 是否展示下载通知栏 .debug(true) // 是否开启sdk 调试⽇志 可选 .debug(false) .customController(new KsCustomController() { @Override public boolean canReadLocation() { return false; } @Override public boolean canUsePhoneState() { return false; } @Override public boolean canUseOaid() { return false; } @Override public String getImei() { return DeviceUtil.getImeiCache(appContext); } @Override public boolean canUseMacAddress() { return false; } @Override public boolean canReadInstalledPackages() { return false; } @Override public List<String> getInstalledPackages() { return DeviceUtil.getInstalledPackageNamesCache(appContext); } })// 是否开启sdk 调试⽇志 可选 .build()); } @@ -377,6 +447,32 @@ DPSdkConfig.Builder configBuilder = new DPSdkConfig.Builder() .debug(false) .needInitAppLog(false) .privacyController(new IDPPrivacyController() { @Override public boolean isCanUsePhoneState() { return false; } @Override public String getImei() { return DeviceUtil.getImeiCache(application); } @Override public String getImsi() { return DeviceUtil.getImsiCache(application); } @Override public boolean isCanUseAndroidId() { return false; } @Override public String getAndroidId() { return super.getAndroidId(); } }) .initListener(new DPSdkConfig.InitListener() { @Override public void onInitComplete(boolean b, String s) { @@ -524,4 +620,57 @@ public void onFinish(); } private static void registerActivityListener(Application application) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { /** * 监听到 Activity创建事件 将该 Activity 加入list */ pushActivity(activity); } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { if (null==mActivitys||mActivitys.isEmpty()) { return; } if (mActivitys.contains(activity)) { /** * 监听到 Activity销毁事件 将该Activity 从list中移除 */ popActivity(activity); } } }); } } } BuWanVideo/src/com/weikou/beibeivideo/ui/SplashActivity.java
@@ -10,6 +10,9 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; @@ -20,6 +23,7 @@ import androidx.fragment.app.FragmentActivity; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -51,6 +55,7 @@ import com.weikou.beibeivideo.util.ad.GDTConstant; import com.weikou.beibeivideo.util.ad.KSConstant; import com.weikou.beibeivideo.util.ad.manager.gm.GMAdSplashManager; import com.weikou.beibeivideo.util.ui.AiDaoUtil; import com.weikou.beibeivideo.util.ui.TopStatusSettings; import org.apache.http.Header; @@ -94,6 +99,10 @@ setContentView(R.layout.activity_splash); TopStatusSettings.setStatusViewAndDeepColor(this); if(ConfigUtil.isAiDaoMode(this)){ AiDaoUtil.setAiDaoMode(this); } vg_ad = findViewById(R.id.fl_splash_ad); vg_input = findViewById(R.id.fl_input); ad_close_time = findViewById(R.id.ad_close_time); @@ -126,7 +135,7 @@ data += String.format("<a href='%s'>《隐私政策》</a>和", BeibeiConstant.PRIVACY_POLICY); data += String.format("<a href='%s'>《用户协议》</a>", BeibeiConstant.USER_AGREEMENT); data += "内的所有条款,<b>尤其是:<br>" + "1、我们对您的个人信息(包括但不限于<font color='#FF0000'>设备MAC地址、IMEI/AndroidID/OAID/IMSI/ICCID/GAID/MEID</font>等信息)的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;<br>" + "1、我们对您的个人信息(包括但不限于<font color='#FF0000'>设备MAC地址、DEVICEID/IMEI/AndroidID/OAID/IMSI/ICCID/GAID/MEID</font>等信息)的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;<br>" + "2、约定我们的限制责任、免责条款;<br>" + "3、其他以加粗或斜体字进行标识的重要条款。</b><br>" + "如您对协议有任何疑虑,可通过电子邮箱: yesbd@qq.com 向我们询问,我们将为您竭诚解答。您点击“同意并继续”的行为代表您已阅读完毕并接受以上协议全部条款。如您同意以上协议内容,请您点击“同意并继续”,开始使用您的产品。"; @@ -518,6 +527,11 @@ //是否正在上线 ConfigUtil.saveOnLining(getApplicationContext(), data.optBoolean("onLining")); // 设置哀悼模式 ConfigUtil.saveAiDaoMode(getApplicationContext(), data.optBoolean("aiDaoMode")); //保存免广告权益持续时间 AdUtil.setPPTVNoAdRewardHour(getApplicationContext(), pptvNoAdRewardHour); BuWanVideo/src/com/weikou/beibeivideo/ui/discover/GoodsDetailActivity.java
@@ -26,6 +26,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.lcjian.library.util.SingleToast; import com.lcjian.library.util.common.DeviceUtil; import com.lcjian.library.util.common.StringUtils; import com.lcjian.library.util.glide.GlideCircleTransform; import com.lcjian.library.widget.MyGridView; @@ -320,12 +321,12 @@ } private boolean getPageNameList() { List<PackageInfo> apps = new ArrayList<PackageInfo>(); List<PackageInfo> apps = new ArrayList<>(); PackageManager pManager = getPackageManager(); //获取手机内所有应用 List<PackageInfo> paklist = pManager.getInstalledPackages(0); List<PackageInfo> paklist = DeviceUtil.getInstalledPackagesCache(getApplicationContext()); for (int i = 0; i < paklist.size(); i++) { PackageInfo pak = (PackageInfo) paklist.get(i); PackageInfo pak = paklist.get(i); //判断是否为非系统预装的应用程序 if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) { // customs applications BuWanVideo/src/com/weikou/beibeivideo/ui/login/LoginActivity.java
@@ -13,6 +13,7 @@ import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; @@ -21,6 +22,7 @@ import com.lcjian.library.dialog.DialogUtil; import com.lcjian.library.util.SingleToast; import com.lcjian.library.util.common.DeviceUtil; import com.lcjian.library.util.common.StringUtils; import com.tencent.mm.opensdk.modelmsg.SendAuth; import com.umeng.socialize.UMAuthListener; @@ -63,6 +65,8 @@ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //防止截屏攻击风险 getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.act_login); TopStatusSettings.setStatusViewAndDeepColor(this); uid = getSharedPreferences("user", Context.MODE_PRIVATE).getString( @@ -191,8 +195,7 @@ * 判断qq是否可用 */ public static boolean isQQClientAvailable(Context context) { final PackageManager packageManager = context.getPackageManager(); List<PackageInfo> pinfo = packageManager.getInstalledPackages(0); List<PackageInfo> pinfo = DeviceUtil.getInstalledPackagesCache(context); if (pinfo != null) { for (int i = 0; i < pinfo.size(); i++) { String pn = pinfo.get(i).packageName; @@ -205,8 +208,7 @@ } public static boolean isWXClientAvailable(Context context) { final PackageManager packageManager = context.getPackageManager(); List<PackageInfo> pinfo = packageManager.getInstalledPackages(0); List<PackageInfo> pinfo = DeviceUtil.getInstalledPackagesCache(context); if (pinfo != null) { for (int i = 0; i < pinfo.size(); i++) { String pn = pinfo.get(i).packageName; BuWanVideo/src/com/weikou/beibeivideo/ui/login/RegisterActivity.java
@@ -9,6 +9,7 @@ import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; @@ -50,6 +51,7 @@ @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.activity_register); TopStatusSettings.setStatusViewAndDeepColor(this); et_email = (EditText) findViewById(R.id.et_name); BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java
@@ -9,6 +9,9 @@ import android.content.pm.ActivityInfo; import android.database.Cursor; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; @@ -48,12 +51,14 @@ import com.weikou.beibeivideo.ui.BaseActivity; import com.weikou.beibeivideo.ui.login.LoginActivity; import com.weikou.beibeivideo.ui.login.PersonInfoActivity; import com.weikou.beibeivideo.ui.login.PhoneLoginActivity; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.ui.mine.SystemMessageActivity; import com.weikou.beibeivideo.ui.mine.WatchHistoryActivity; import com.weikou.beibeivideo.ui.push.PushOpenClickActivity; import com.weikou.beibeivideo.ui.recommend.SearchActivity; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.ConfigUtil; import com.weikou.beibeivideo.util.ExitDialog; import com.weikou.beibeivideo.util.LoginFirstDialog; import com.weikou.beibeivideo.util.UserUtil; @@ -61,6 +66,7 @@ import com.weikou.beibeivideo.util.ad.CSJConstant; import com.weikou.beibeivideo.util.ad.GDTConstant; import com.weikou.beibeivideo.util.ad.InterstitialAdUtil; import com.weikou.beibeivideo.util.ui.AiDaoUtil; import com.weikou.beibeivideo.util.ui.TopStatusSettings; import com.yeshi.appupdate.AppUpdate; import com.yeshi.push.PushUtil; @@ -164,6 +170,10 @@ super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 锁定竖屏 setContentView(R.layout.activity_main); if(ConfigUtil.isAiDaoMode(this)){ AiDaoUtil.setAiDaoMode(this); } mAQuery = new AQuery(this); exitDialogBuilder = new ExitDialog.Builder(this); @@ -203,6 +213,9 @@ mFragmentSwitchHelper = FragmentSwitchHelperV2.create( R.id.fl_main_fragment_container, getSupportFragmentManager(), getFragments() ); rg_nav = findViewById(R.id.rg_nav); rg_nav.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @@ -309,6 +322,10 @@ } // ((RadioGroup) mAQuery.id(R.id.rg_nav).getView()).setPadding(0, 0, 0, 0); } //正在上线就需要隐藏小说 if (ConfigUtil.isOnLining(getApplicationContext())) { mAQuery.id(R.id.rb_nav_novel).visibility(View.GONE); } } private void setSearchBarVisibility() { BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java
@@ -49,6 +49,7 @@ import com.google.gson.reflect.TypeToken; import com.lcjian.library.entity.eventbus.PlayerControllerShow; import com.lcjian.library.entity.eventbus.PlayerLock; import com.lcjian.library.util.ManifestDataUtil; import com.lcjian.library.util.SingleToast; import com.lcjian.library.util.SystemCommon; import com.lcjian.library.util.common.DimenUtils; @@ -304,8 +305,18 @@ private void loadFullVideoAd() { if (adInfo == null || !adInfo.isFullVideo()) return; //加载广告 if (BeibeiConstant.AD_TYPE.isVideoDetailSplashAd()) { //如果是华为渠道,固定为广点通插屏 String channel = ManifestDataUtil.getAppMetaData(getApplicationContext(), "UMENG_CHANNEL"); if("huawei".equalsIgnoreCase(channel)){ //采用广点通插屏 InterstitialAdUtil.showAd(this, AdUtil.AD_TYPE.gdt,"7002342568464590"); return; } //判断加载广告的类型 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { int fullvideo = adInfo.getFullVideoWeight(); BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java
@@ -191,7 +191,7 @@ //填充数据 private void setAdContent() { private synchronized void setAdContent() { //没有广告,添加广告 if (position != 0)//只有推荐才有广告 return; BuWanVideo/src/com/weikou/beibeivideo/util/ConfigUtil.java
@@ -138,6 +138,19 @@ } public static void saveAiDaoMode(Context context, boolean content) { saveConfig("aiDaoMode", content+"", context); } public static boolean isAiDaoMode(Context context){ String onLine= getConfig("aiDaoMode", context); if(StringUtils.isEmpty(onLine)){ return false; } return Boolean.parseBoolean(onLine); } private static void saveConfig(String key, String value, Context context) { SharedPreferences.Editor editor = context.getSharedPreferences("config", Context.MODE_PRIVATE).edit(); editor.putString(key, value); BuWanVideo/src/com/weikou/beibeivideo/util/DebuggerUtils.java
New file @@ -0,0 +1,135 @@ package com.weikou.beibeivideo.util; import android.content.Context; import android.content.pm.ApplicationInfo; import android.os.Debug; import android.util.Log; import android.widget.Toast; import com.weikou.beibeivideo.BeibeiVideoApplication; import com.weikou.beibeivideo.BuildConfig; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Locale; import java.util.Timer; import java.util.TimerTask; public class DebuggerUtils { /** * 判断当前应用是否是debug状态 */ public static boolean isDebuggable(Context context) { try { ApplicationInfo info = context.getApplicationInfo(); return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; } catch (Exception e) { return false; } } /** * 检测是否在非Debug编译模式下,进行了调试操作,以防动态调试 * * @param context * @return */ private static Timer timer; private static int tempCount=0; public static void checkDebuggableInNotDebugModel(Context context) { //非Debug 编译,反调试检测 if (!BuildConfig.DEBUG) { if (isDebuggable(context)) { ToastUtils.show("已被动态调试"); exitApp(); } timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // 测试 // tempCount++; // if(tempCount==5*10){ // exitApp(); // } // ToastUtils.show("循环判断"); try { //判断是否有调试器连接,是就退出 if (Debug.isDebuggerConnected()) { //Toast.makeText(context, "已被动态调试", Toast.LENGTH_SHORT).show(); ToastUtils.show("已被动态调试"); exitApp(); } //判断是否被其他进程跟踪,是就退出 if (isUnderTraced()) { //Toast.makeText(context, "已被其他恶意进程跟踪", Toast.LENGTH_SHORT).show(); ToastUtils.show("已被其他恶意进程跟踪"); exitApp(); } } catch (Exception e) { e.printStackTrace(); } } },0,200); } if (isUnderTraced()) { ToastUtils.show("已被其他恶意进程跟踪"); exitApp(); } } /** * 当我们使用Ptrace方式跟踪一个进程时,目标进程会记录自己被谁跟踪,可以查看/proc/pid/status看到这个信息,而没有被调试的时候TracerPid为0 * * @return */ private static boolean isUnderTraced() { String processStatusFilePath = String.format(Locale.US, "/proc/%d/status", android.os.Process.myPid()); File procInfoFile = new File(processStatusFilePath); try { BufferedReader b = new BufferedReader(new FileReader(procInfoFile)); String readLine; while ((readLine = b.readLine()) != null) { if (readLine.contains("TracerPid")) { String[] arrays = readLine.split(":"); if (arrays.length == 2) { int tracerPid = Integer.parseInt(arrays[1].trim()); if (tracerPid != 0) { return true; } } } } b.close(); } catch (Exception e) { e.printStackTrace(); } return false; } private static void exitApp(){ BeibeiVideoApplication.finishAllActivity(); int myPid = android.os.Process.myPid(); android.os.Process.killProcess(myPid); System.exit(0); } static class ToastUtils { private static final String TAG = "ToastUtils"; public static void show(String msg) { Log.w(TAG, msg); } } } BuWanVideo/src/com/weikou/beibeivideo/util/ad/TTAdManagerHolder.java
@@ -9,6 +9,7 @@ import com.bytedance.sdk.openadsdk.TTAdManager; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTCustomController; import com.lcjian.library.util.common.DeviceUtil; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.entity.ad.AdPositionEnum; @@ -62,14 +63,25 @@ } @Override public boolean isCanUsePhoneState() { return false; } @Override public LocationProvider getTTLocation() { return null; } @Override public boolean isCanUseAndroidId() { return false; } @Override public String getDevImei() { return DeviceUtil.getImeiCache(context); } }) .asyncInit(true) .needClearTaskReset(); BuWanVideo/src/com/weikou/beibeivideo/util/downutil/StringUtils.java
@@ -17,6 +17,8 @@ import android.text.style.RelativeSizeSpan; import android.widget.TextView; import com.lcjian.library.util.common.DeviceUtil; public class StringUtils { public static boolean isInt(String text) { @@ -227,10 +229,7 @@ }; public static String PeopleDeviceId(Context context) { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); String deviceid = tm.getDeviceId(); return deviceid; return DeviceUtil.getImeiCache(context); } public static void getdiffrentColor(TextView tv, int color, int start, BuWanVideo/src/com/weikou/beibeivideo/util/ui/AiDaoUtil.java
New file @@ -0,0 +1,21 @@ package com.weikou.beibeivideo.util.ui; import android.app.Activity; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.view.View; public class AiDaoUtil { public static void setAiDaoMode(Activity activity){ // 黑白化 Paint mPaint = new Paint(); ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); mPaint.setColorFilter(new ColorMatrixColorFilter(cm)); activity.getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, mPaint); } } library-APPUpdate/src/com/yeshi/appupdate/AppUpdate.java
@@ -25,6 +25,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonSyntaxException; import com.google.gson.reflect.TypeToken; import com.lcjian.library.util.common.DeviceUtil; import com.loopj.android.http.TextHttpResponseHandler; import com.yeshi.appupdate.api.AppUpdateAPI; import com.yeshi.appupdate.entity.UpdateBean; @@ -65,7 +66,7 @@ if (ContextCompat.checkSelfPermission(mActivity, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(mActivity, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { try { deviceId = manager.getDeviceId();// 获取deviceId deviceId = DeviceUtil.getImeiCache(mActivity); } catch (Exception e) { } library-APPUpdate/src/com/yeshi/appupdate/util/StringUtils.java
@@ -21,6 +21,8 @@ import android.text.style.RelativeSizeSpan; import android.widget.TextView; import com.lcjian.library.util.common.DeviceUtil; /** * 瀛楃蹇嵎鏂瑰紡锛氬垽鏂瓧绗︿覆<涓枃瀛楃銆侀偖绠便?鎵嬫満鍙枫?绌哄瓧绗︺?鏁存暟銆佹诞鐐规暟> */ @@ -442,7 +444,7 @@ String deviceid =""; if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { deviceid = tm.getDeviceId();// 获取deviceId deviceid = DeviceUtil.getImeiCache(context); } return deviceid; library-GDTSDK/build.gradle
@@ -5,6 +5,9 @@ api 'androidx.legacy:legacy-support-v4:1.0.0' // api 'com.qq.e.union:union:4.461.1331' api 'com.qq.e.union:union:4.480.1350' api 'com.tencent.tbs:tbssdk:44213' // implementation 'com.qq.e.union:union:4.410.1290' // api files("libs/GDTSDK.unionNormal.4.420.1290.aar") } library-VideoPlayer/src/main/assets/player_acfun.js
@@ -1,25 +1 @@ setInterval(function () { console.log('acfun:'); $('.acmplayer-fullscreen-btn').unbind("click"); $('.acmplayer-fullscreen-btn').click(function () { if(!yeshiPlayer.isFullScreen()) { console.log('acfun全屏'); var el = document.getElementById('mPlayer'); if (el.requestFullscreen) { el.requestFullscreen(); } else if (el.msRequestFullscreen) { el.msRequestFullscreen(); } else if (el.mozRequestFullScreen) { el.mozRequestFullScreen(); } else if (el.webkitRequestFullscreen) { el.webkitRequestFullscreen(); } }else{ console.log('acfun小屏'); yeshiPlayer.setPortrait(); } return false; }); }, 2000); eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('g(5(){2.3(\'4:\');$(\'.6-7-8\').h("9");$(\'.6-7-8\').9(5(){0(!b.i()){2.3(\'4全屏\');j a=k.l(\'m\');0(a.c){a.c()}1 0(a.d){a.d()}1 0(a.e){a.e()}1 0(a.f){a.f()}}1{2.3(\'4小屏\');b.n()}o p})},q);',27,27,'if|else|console|log|acfun|function|acmplayer|fullscreen|btn|click||yeshiPlayer|requestFullscreen|msRequestFullscreen|mozRequestFullScreen|webkitRequestFullscreen|setInterval|unbind|isFullScreen|var|document|getElementById|mPlayer|setPortrait|return|false|2000'.split('|'),0,{})) library-VideoPlayer/src/main/assets/player_funshion.js
@@ -1,25 +1 @@ setInterval(function () { for(var i=0;i<$('.full-btn').length;i++){ $('.full-btn').eq(i).unbind("click"); } $('.full-btn').click(function () { if(!yeshiPlayer.isFullScreen()) { console.log('风行全屏'); var el = document.getElementById('j-player-layout'); if (el.requestFullscreen) { el.requestFullscreen(); } else if (el.msRequestFullscreen) { el.msRequestFullscreen(); } else if (el.mozRequestFullScreen) { el.mozRequestFullScreen(); } else if (el.webkitRequestFullscreen) { el.webkitRequestFullscreen(); } }else{ console.log('风行小屏'); yeshiPlayer.setPortrait(); } return false; }); }, 2000); eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('g(5(){h(6 i=0;i<$(\'.3-4\').k;i++){$(\'.3-4\').l(i).m("7")}$(\'.3-4\').7(5(){1(!8.n()){9.b(\'风行全屏\');6 a=o.p(\'j-q-r\');1(a.c){a.c()}2 1(a.d){a.d()}2 1(a.e){a.e()}2 1(a.f){a.f()}}2{9.b(\'风行小屏\');8.s()}t u})},v);',32,32,'|if|else|full|btn|function|var|click|yeshiPlayer|console||log|requestFullscreen|msRequestFullscreen|mozRequestFullScreen|webkitRequestFullscreen|setInterval|for|||length|eq|unbind|isFullScreen|document|getElementById|player|layout|setPortrait|return|false|2000'.split('|'),0,{})) library-common/src/com/lcjian/library/DeviceUuidFactory.java
@@ -10,6 +10,8 @@ import androidx.core.content.ContextCompat; import android.telephony.TelephonyManager; import com.lcjian.library.util.common.DeviceUtil; public class DeviceUuidFactory { @@ -44,7 +46,7 @@ String deviceId=""; if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { deviceId = tm.getDeviceId();// 获取deviceId deviceId = DeviceUtil.getImeiCache(context); } uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")) : UUID.randomUUID(); } library-common/src/com/lcjian/library/util/MarketUtils.java
@@ -21,6 +21,8 @@ import android.util.Log; import android.widget.Toast; import com.lcjian.library.util.common.DeviceUtil; import java.util.ArrayList; import java.util.List; @@ -76,8 +78,7 @@ List<ApplicationInfo> infos = new ArrayList<>(); if (context == null || MarketPackages == null || MarketPackages.size() == 0) return infos; PackageManager pm = context.getPackageManager(); List<PackageInfo> installedPkgs = pm.getInstalledPackages(0); List<PackageInfo> installedPkgs = DeviceUtil.getInstalledPackagesCache(context); int li = installedPkgs.size(); int lj = MarketPackages.size(); for (int j = 0; j < lj; j++) { @@ -152,8 +153,7 @@ ArrayList<String> empty = new ArrayList<String>(); if (context == null || pkgs == null || pkgs.size() == 0) return empty; PackageManager pm = context.getPackageManager(); List<PackageInfo> installedPkgs = pm.getInstalledPackages(0); List<PackageInfo> installedPkgs =DeviceUtil.getInstalledPackagesCache(context); int li = installedPkgs.size(); int lj = pkgs.size(); for (int j = 0; j < lj; j++) { library-common/src/com/lcjian/library/util/common/DeviceUtil.java
New file @@ -0,0 +1,88 @@ package com.lcjian.library.util.common; import android.app.Application; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.provider.Settings; import android.telephony.TelephonyManager; import java.util.ArrayList; import java.util.List; import static android.content.Context.TELEPHONY_SERVICE; public class DeviceUtil { private static List<PackageInfo> installedPackages; private static String imei; private static String android_id; private static String imsi; public static synchronized List<PackageInfo> getInstalledPackagesCache(Context context) { if (installedPackages != null) { return installedPackages; } PackageManager pManager = context.getPackageManager(); //获取手机内所有应用 installedPackages = pManager.getInstalledPackages(0); return installedPackages; } public static synchronized List<String> getInstalledPackageNamesCache(Context context) { List<PackageInfo> list = getInstalledPackagesCache(context); List<String> nameList = new ArrayList<>(); for (PackageInfo pi : list) { nameList.add(pi.packageName); } return nameList; } public static synchronized String getImeiCache(Context context) { if(imei!=null){ return imei; } TelephonyManager manager = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE); try { imei = manager.getDeviceId(); }catch(Exception e){ } imei = imei == null ? "" : imei; return imei; } public static synchronized String getAndroidIdCache(Context context){ if(android_id!=null){ return android_id; } try { android_id = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); }catch(Exception e){ } android_id = android_id == null ? "" : android_id; return android_id; } public static synchronized String getImsiCache(Context context){ if(imsi!=null){ return imsi; } TelephonyManager mTelephonyMgr = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); try { imsi = mTelephonyMgr.getSubscriberId(); }catch(Exception e){ } imsi = imsi == null ? "" : imsi; return imsi; } } library-youth/build.gradle
@@ -37,7 +37,7 @@ testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' api files('libs/tbs_sdk_thirdapp_v4.3.0.185_44085.jar') api 'com.tencent.tbs:tbssdk:44213' library-youth/libs/tbs_sdk_thirdapp_v4.3.0.185_44085.jarBinary files differ