pull/137/head
FongMi 3 years ago
parent a42af94f61
commit 849f2ef14f
  1. 8
      app/src/main/java/com/fongmi/android/tv/App.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/player/source/TVBus.java
  3. 18
      tvbus/src/main/java/com/tvbus/engine/PmsHook.java
  4. 9
      tvbus/src/main/java/com/tvbus/engine/TVCore.java

@ -2,6 +2,7 @@ package com.fongmi.android.tv;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@ -15,6 +16,7 @@ import com.fongmi.android.tv.utils.Prefers;
import com.github.catvod.bean.Doh;
import com.github.catvod.net.OkHttp;
import com.google.gson.Gson;
import com.tvbus.engine.PmsHook;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@ -73,6 +75,12 @@ public class App extends Application {
this.activity = activity;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
PmsHook.inject(base);
}
@Override
public void onCreate() {
super.onCreate();

@ -21,7 +21,7 @@ public class TVBus implements Listener {
}
private void init(Core core) {
tvcore = TVCore.get();
tvcore = new TVCore();
tvcore.auth(core.getAuth()).broker(core.getBroker());
tvcore.name(core.getName()).pass(core.getPass());
tvcore.serv(0).play(8902).mode(1).listener(this);

@ -19,17 +19,11 @@ public class PmsHook implements InvocationHandler {
private String name;
private Object base;
public static void inject() {
new PmsHook().hook();
public static void inject(Context context) {
new PmsHook().hook(context);
}
private Context getContext() throws Throwable {
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Method method = activityThreadClass.getMethod("currentApplication");
return (Context) method.invoke(null);
}
private void hook() {
private void hook(Context context) {
try {
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Class<?> iPackageManagerInterface = Class.forName("android.content.pm.IPackageManager");
@ -37,12 +31,12 @@ public class PmsHook implements InvocationHandler {
Field sPackageManagerField = activityThreadClass.getDeclaredField("sPackageManager");
Object currentActivityThread = currentActivityThreadMethod.invoke(null);
sPackageManagerField.setAccessible(true);
this.sign = getSign(getContext());
this.name = getContext().getPackageName();
this.sign = getSign(context);
this.name = context.getPackageName();
this.base = sPackageManagerField.get(currentActivityThread);
Object proxy = Proxy.newProxyInstance(iPackageManagerInterface.getClassLoader(), new Class<?>[]{iPackageManagerInterface}, this);
sPackageManagerField.set(currentActivityThread, proxy);
PackageManager pm = getContext().getPackageManager();
PackageManager pm = context.getPackageManager();
Field mPmField = pm.getClass().getDeclaredField("mPM");
mPmField.setAccessible(true);
mPmField.set(pm, proxy);

@ -6,17 +6,8 @@ public class TVCore {
private long handle;
private static class Loader {
static volatile TVCore INSTANCE = new TVCore();
}
public static TVCore get() {
return Loader.INSTANCE;
}
public TVCore() {
try {
PmsHook.inject();
System.loadLibrary("tvcore");
handle = initialise();
} catch (Throwable ignored) {

Loading…
Cancel
Save