Merge branch 'dev' into release

pull/137/head
FongMi 3 years ago
commit 62530abc27
  1. 5
      app/build.gradle
  2. 1
      app/src/leanback/java/com/fongmi/android/tv/Product.java
  3. 1
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  4. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  5. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  6. 2
      app/src/main/java/com/fongmi/android/tv/App.java
  7. 4
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  8. 15
      app/src/main/java/com/fongmi/android/tv/bean/Core.java
  9. 2
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  10. 4
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  11. 3
      app/src/main/java/com/fongmi/android/tv/player/extractor/TVBus.java
  12. 4
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  13. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  14. 13
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MangaActivity.java
  15. 3
      catvod/src/main/java/com/github/catvod/utils/Github.java
  16. 2
      catvod/src/main/java/com/github/catvod/utils/Path.java
  17. 4
      catvod/src/main/java/com/github/catvod/utils/Util.java
  18. 488
      hook/src/main/java/com/fongmi/hook/PackageManager.java

@ -21,12 +21,12 @@ android {
leanback {
dimension "mode"
versionCode 204
versionName "2.0.4"
versionName "20230812"
}
mobile {
dimension "mode"
versionCode 204
versionName "2.0.4"
versionName "20230812"
}
java {
dimension "api"
@ -122,6 +122,7 @@ dependencies {
leanbackImplementation 'androidx.leanback:leanback:1.2.0-alpha02'
leanbackImplementation 'me.jessyan:autosize:1.2.1'
mobileImplementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
mobileImplementation 'com.github.chrisbanes:PhotoView:2.3.0'
mobileImplementation 'com.github.devin1014.DLNA-Cast:dlna-dmc:V1.0.0'
mobileImplementation('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false }
annotationProcessor 'androidx.room:room-compiler:2.5.2'

@ -1,7 +1,6 @@
package com.fongmi.android.tv;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.ui.activity.LiveActivity;
import com.fongmi.android.tv.utils.ResUtil;
public class Product {

@ -1237,7 +1237,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
@Override
public void onSpeedEnd() {
if (!mPlayers.isPlaying()) return;
mBinding.control.speed.setText(mPlayers.setSpeed(mHistory.getSpeed()));
mBinding.widget.speed.setVisibility(View.GONE);
mBinding.widget.speed.clearAnimation();

@ -293,7 +293,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
private void setSize(View view) {
int index = Setting.getSize();
Setting.putSize(index = index == size.length - 2 ? 0 : ++index);
Setting.putSize(index = index == size.length - 1 ? 0 : ++index);
mBinding.sizeText.setText(size[index]);
RefreshEvent.size();
}

@ -174,7 +174,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
}
private void checkPage(int count) {
if (mScroller.isDisable() || count == 0 || mAdapter.size() >= 4 || isFolder()) return;
if (mScroller.isDisable() || count == 0 || mAdapter.size() >= 5 || isFolder()) return;
getVideo(getTypeId(), String.valueOf(mScroller.addPage()));
}

@ -148,7 +148,7 @@ public class App extends Application {
@Override
public PackageManager getPackageManager() {
if (!hook) return getBaseContext().getPackageManager();
return LiveConfig.get().getHome().getCore().getPackageManager();
return LiveConfig.get().getHome().getCore();
}
@Override

@ -69,10 +69,6 @@ public class ApiConfig {
return get().getSites().indexOf(get().getHome());
}
public static String getSiteName(String key) {
return get().getSite(key).getName();
}
public static boolean hasParse() {
return get().getParses().size() > 0;
}

@ -1,15 +1,14 @@
package com.fongmi.android.tv.bean;
import android.content.pm.PackageManager;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.utils.Utils;
import com.fongmi.hook.PackageManager;
import com.google.gson.annotations.SerializedName;
public class Core {
public class Core extends PackageManager {
@SerializedName("auth")
private String auth;
@ -21,8 +20,6 @@ public class Core {
private String broker;
@SerializedName("resp")
private String resp;
@SerializedName("sign")
private String sign;
@SerializedName("pkg")
private String pkg;
@SerializedName("so")
@ -48,10 +45,6 @@ public class Core {
return TextUtils.isEmpty(resp) ? "" : resp;
}
public String getSign() {
return TextUtils.isEmpty(sign) ? "" : sign;
}
public String getPkg() {
return TextUtils.isEmpty(pkg) ? "" : pkg;
}
@ -60,8 +53,8 @@ public class Core {
return TextUtils.isEmpty(so) ? "" : so;
}
public PackageManager getPackageManager() {
return App.get().getPackageManager();
public boolean hook() {
return false;
}
@Override

@ -214,7 +214,7 @@ public class History {
}
public String getSiteName() {
return ApiConfig.getSiteName(getSiteKey());
return ApiConfig.get().getSite(getSiteKey()).getName();
}
public String getSiteKey() {

@ -202,8 +202,8 @@ public class Vod {
return getVodTag().equals("folder");
}
public boolean isComic() {
return getVodTag().equals("comic");
public boolean isManga() {
return getVodTag().equals("manga");
}
public Style getStyle(Style style) {

@ -21,11 +21,12 @@ public class TVBus implements Source.Extractor, Listener {
}
private void init(Core core) {
App.get().setHook(true);
App.get().setHook(core.hook());
tvcore = new TVCore(core.getSo());
tvcore.auth(core.getAuth()).broker(core.getBroker());
tvcore.name(core.getName()).pass(core.getPass());
tvcore.serv(0).play(8902).mode(1).listener(this);
App.get().setHook(false);
tvcore.init();
}

@ -128,8 +128,8 @@ public class CustomWebView extends WebView {
else callback = null;
}
private void onParseSuccess(Map<String, String> news, String url) {
if (callback != null) callback.onParseSuccess(news, url, from);
private void onParseSuccess(Map<String, String> headers, String url) {
if (callback != null) callback.onParseSuccess(headers, url, from);
App.post(() -> stop(false));
callback = null;
}

@ -1270,7 +1270,6 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
@Override
public void onSpeedEnd() {
if (!mPlayers.isPlaying()) return;
mBinding.control.action.speed.setText(mPlayers.setSpeed(mHistory.getSpeed()));
mBinding.widget.speed.setVisibility(View.GONE);
mBinding.widget.speed.clearAnimation();

@ -0,0 +1,13 @@
package com.fongmi.android.tv.ui.activity;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.ui.base.BaseActivity;
public class MangaActivity extends BaseActivity {
@Override
protected ViewBinding getBinding() {
return null;
}
}

@ -68,7 +68,8 @@ public class Github {
public static String getSo(String name) {
try {
File file = Path.so(name);
if (file.length() < 300) Path.write(file, OkHttp.newCall(getUrl("so", file.getName())).execute().body().bytes());
String url = name.startsWith("http") ? name : getUrl("so", file.getName());
if (file.length() < 300) Path.write(file, OkHttp.newCall(url).execute().body().bytes());
return file.getAbsolutePath();
} catch (Exception e) {
return "";

@ -1,5 +1,6 @@
package com.github.catvod.utils;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
@ -93,6 +94,7 @@ public class Path {
}
public static File so(String name) {
if (name.startsWith("http")) return new File(so(), Uri.parse(name).getLastPathSegment());
return new File("mitv".equals(name) ? cache() : so(), "lib".concat(name).concat(".so"));
}

@ -46,12 +46,12 @@ public class Util {
public static String scheme(String url) {
String scheme = Uri.parse(url).getScheme();
return scheme == null ? "" : scheme.toLowerCase();
return scheme == null ? "" : scheme.toLowerCase().trim();
}
public static String host(String url) {
String host = Uri.parse(url).getHost();
return host == null ? "" : host.toLowerCase();
return host == null ? "" : host.toLowerCase().trim();
}
public static String md5(String src) {

@ -0,0 +1,488 @@
package com.fongmi.hook;
import android.annotation.TargetApi;
import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ChangedPackages;
import android.content.pm.FeatureInfo;
import android.content.pm.InstrumentationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInstaller;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.VersionedPackage;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import java.util.List;
public class PackageManager extends android.content.pm.PackageManager {
@Override
public PackageInfo getPackageInfo(String packageName, int flags) {
return new PackageInfo();
}
@Override
@TargetApi(26)
public PackageInfo getPackageInfo(VersionedPackage versionedPackage, int flags) {
return getPackageInfo(versionedPackage.getPackageName(), flags);
}
@Override
public String[] currentToCanonicalPackageNames(String[] packageNames) {
return new String[0];
}
@Override
public String[] canonicalToCurrentPackageNames(String[] packageNames) {
return new String[0];
}
@Override
public Intent getLaunchIntentForPackage(String packageName) {
return null;
}
@Override
public Intent getLeanbackLaunchIntentForPackage(String packageName) {
return null;
}
@Override
public int[] getPackageGids(String packageName) {
return new int[0];
}
@Override
public int[] getPackageGids(String packageName, int flags) {
return new int[0];
}
@Override
public int getPackageUid(String packageName, int flags) {
return 0;
}
@Override
public PermissionInfo getPermissionInfo(String permName, int flags) {
return null;
}
@Override
public List<PermissionInfo> queryPermissionsByGroup(String permissionGroup, int flags) {
return null;
}
@Override
public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags) {
return null;
}
@Override
public List<PermissionGroupInfo> getAllPermissionGroups(int flags) {
return null;
}
@Override
public ApplicationInfo getApplicationInfo(String packageName, int flags) {
return null;
}
@Override
public ActivityInfo getActivityInfo(ComponentName component, int flags) {
return null;
}
@Override
public ActivityInfo getReceiverInfo(ComponentName component, int flags) {
return null;
}
@Override
public ServiceInfo getServiceInfo(ComponentName component, int flags) {
return null;
}
@Override
public ProviderInfo getProviderInfo(ComponentName component, int flags) {
return null;
}
@Override
public List<PackageInfo> getInstalledPackages(int flags) {
return null;
}
@Override
public List<PackageInfo> getPackagesHoldingPermissions(String[] permissions, int flags) {
return null;
}
@Override
public int checkPermission(String permName, String packageName) {
return android.content.pm.PackageManager.PERMISSION_GRANTED;
}
@Override
public boolean isPermissionRevokedByPolicy(String permName, String packageName) {
return false;
}
@Override
public boolean addPermission(PermissionInfo info) {
return false;
}
@Override
public boolean addPermissionAsync(PermissionInfo info) {
return false;
}
@Override
public void removePermission(String permName) {
}
@Override
public int checkSignatures(String packageName1, String packageName2) {
return android.content.pm.PackageManager.SIGNATURE_MATCH;
}
@Override
public int checkSignatures(int uid1, int uid2) {
return android.content.pm.PackageManager.SIGNATURE_MATCH;
}
@Override
public String[] getPackagesForUid(int uid) {
return new String[0];
}
@Override
public String getNameForUid(int uid) {
return null;
}
@Override
public List<ApplicationInfo> getInstalledApplications(int flags) {
return null;
}
@Override
public boolean isInstantApp() {
return false;
}
@Override
public boolean isInstantApp(String packageName) {
return false;
}
@Override
public int getInstantAppCookieMaxBytes() {
return 0;
}
@Override
public byte[] getInstantAppCookie() {
return new byte[0];
}
@Override
public void clearInstantAppCookie() {
}
@Override
public void updateInstantAppCookie(byte[] cookie) {
}
@Override
public String[] getSystemSharedLibraryNames() {
return new String[0];
}
@Override
public List<SharedLibraryInfo> getSharedLibraries(int flags) {
return null;
}
@Override
public ChangedPackages getChangedPackages(int sequenceNumber) {
return null;
}
@Override
public FeatureInfo[] getSystemAvailableFeatures() {
return new FeatureInfo[0];
}
@Override
public boolean hasSystemFeature(String featureName) {
return false;
}
@Override
public boolean hasSystemFeature(String featureName, int version) {
return false;
}
@Override
public ResolveInfo resolveActivity(Intent intent, int flags) {
return null;
}
@Override
public List<ResolveInfo> queryIntentActivities(Intent intent, int flags) {
return null;
}
@Override
public List<ResolveInfo> queryIntentActivityOptions(ComponentName caller, Intent[] specifics, Intent intent, int flags) {
return null;
}
@Override
public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags) {
return null;
}
@Override
public ResolveInfo resolveService(Intent intent, int flags) {
return null;
}
@Override
public List<ResolveInfo> queryIntentServices(Intent intent, int flags) {
return null;
}
@Override
public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) {
return null;
}
@Override
public ProviderInfo resolveContentProvider(String authority, int flags) {
return null;
}
@Override
public List<ProviderInfo> queryContentProviders(String processName, int uid, int flags) {
return null;
}
@Override
public InstrumentationInfo getInstrumentationInfo(ComponentName className, int flags) {
return null;
}
@Override
public List<InstrumentationInfo> queryInstrumentation(String targetPackage, int flags) {
return null;
}
@Override
public Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo) {
return null;
}
@Override
public Drawable getActivityIcon(ComponentName activityName) {
return null;
}
@Override
public Drawable getActivityIcon(Intent intent) {
return null;
}
@Override
public Drawable getActivityBanner(ComponentName activityName) {
return null;
}
@Override
public Drawable getActivityBanner(Intent intent) {
return null;
}
@Override
public Drawable getDefaultActivityIcon() {
return null;
}
@Override
public Drawable getApplicationIcon(ApplicationInfo info) {
return null;
}
@Override
public Drawable getApplicationIcon(String packageName) {
return null;
}
@Override
public Drawable getApplicationBanner(ApplicationInfo info) {
return null;
}
@Override
public Drawable getApplicationBanner(String packageName) {
return null;
}
@Override
public Drawable getActivityLogo(ComponentName activityName) {
return null;
}
@Override
public Drawable getActivityLogo(Intent intent) {
return null;
}
@Override
public Drawable getApplicationLogo(ApplicationInfo info) {
return null;
}
@Override
public Drawable getApplicationLogo(String packageName) {
return null;
}
@Override
public Drawable getUserBadgedIcon(Drawable drawable, UserHandle user) {
return null;
}
@Override
public Drawable getUserBadgedDrawableForDensity(Drawable drawable, UserHandle user, Rect badgeLocation, int badgeDensity) {
return null;
}
@Override
public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) {
return null;
}
@Override
public CharSequence getText(String packageName, int resid, ApplicationInfo appInfo) {
return null;
}
@Override
public XmlResourceParser getXml(String packageName, int resid, ApplicationInfo appInfo) {
return null;
}
@Override
public CharSequence getApplicationLabel(ApplicationInfo info) {
return null;
}
@Override
public Resources getResourcesForActivity(ComponentName activityName) {
return null;
}
@Override
public Resources getResourcesForApplication(ApplicationInfo app) {
return null;
}
@Override
public Resources getResourcesForApplication(String packageName) {
return null;
}
@Override
public void verifyPendingInstall(int id, int verificationCode) {
}
@Override
public void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay) {
}
@Override
public void setInstallerPackageName(String targetPackage, String installerPackageName) {
}
@Override
public String getInstallerPackageName(String packageName) {
return null;
}
@Override
public void addPackageToPreferred(String packageName) {
}
@Override
public void removePackageFromPreferred(String packageName) {
}
@Override
public List<PackageInfo> getPreferredPackages(int flags) {
return null;
}
@Override
public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity) {
}
@Override
public void clearPackagePreferredActivities(String packageName) {
}
@Override
public int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName) {
return 0;
}
@Override
public void setComponentEnabledSetting(ComponentName componentName, int newState, int flags) {
}
@Override
public int getComponentEnabledSetting(ComponentName componentName) {
return android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
}
@Override
public void setApplicationEnabledSetting(String packageName, int newState, int flags) {
}
@Override
public int getApplicationEnabledSetting(String packageName) {
return android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
}
@Override
public boolean isSafeMode() {
return false;
}
@Override
public void setApplicationCategoryHint(String packageName, int categoryHint) {
}
@Override
public PackageInstaller getPackageInstaller() {
return null;
}
@Override
public boolean canRequestPackageInstalls() {
return false;
}
}
Loading…
Cancel
Save