aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/sysuicontroller/Main.java
blob: 628b280772279eaca3965b57a1bbc78aa2698827 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package moe.yuuta.sysuicontroller;

import android.app.Application;
import android.content.Context;
import android.os.Build;

import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.perf.FirebasePerformance;

import moe.shizuku.api.ShizukuClientHelper;
import moe.shizuku.api.ShizukuService;

public class Main extends Application {
    public static final String GLOBAL_TAG = "UIC";

    private static boolean v3Failed;
    private static boolean v3TokenValid;

    // From the sample of Shizuku
    public static boolean isShizukuV3Failed() {
        return v3Failed;
    }

    public static boolean isShizukuV3TokenValid() {
        return v3TokenValid;
    }

    public static void setV3TokenValid(boolean v3TokenValid) {
        Main.v3TokenValid = v3TokenValid;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(!BuildConfig.DEBUG);
        FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        ShizukuClientHelper.setBinderReceivedListener(() -> {
            if (ShizukuService.getBinder() == null) {
                v3Failed = true;
                return;
            } else {
                try {
                    // test the binder first
                    ShizukuService.pingBinder();

                    if (Build.VERSION.SDK_INT < 23) {
                        String token = ShizukuClientHelper.loadPre23Token(base);
                        v3TokenValid = ShizukuService.setCurrentProcessTokenPre23(token);
                    }
                } catch (Throwable tr) {
                    return;
                }
            }
        });
    }
}