Skip to content

Commit b96c90a

Browse files
committed
Fixing bugs (#52, #53)
2 parents 89d03e0 + 6b2f3f4 commit b96c90a

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

pandora-core/src/main/java/tech/linjiang/pandora/Pandora.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.app.Application;
55
import androidx.core.content.FileProvider;
6+
import android.content.Context;
67

78
import tech.linjiang.pandora.crash.CrashHandler;
89
import tech.linjiang.pandora.database.Databases;
@@ -30,7 +31,8 @@ public Pandora() {
3031
@Override
3132
public boolean onCreate() {
3233
INSTANCE = this;
33-
init(((Application) getContext()));
34+
Context context = Utils.makeContextSafe(getContext());
35+
init(((Application) context));
3436
return super.onCreate();
3537
}
3638

pandora-core/src/main/java/tech/linjiang/pandora/network/OkHttpInterceptor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public Response intercept(Chain chain) throws IOException {
6262
Response response;
6363
try {
6464
response = chain.proceed(request);
65-
} catch (IOException e) {
65+
} catch (Throwable e) {
6666
if (Config.isNetLogEnable() && id >= 0) {
6767
markFailed(id, Utils.collectThrow(e));
6868
notifyEnd(id);

pandora-core/src/main/java/tech/linjiang/pandora/util/Utils.java

+15
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.PrintWriter;
2222
import java.io.StringWriter;
2323
import java.io.Writer;
24+
import java.lang.reflect.Method;
2425
import java.math.BigDecimal;
2526
import java.text.DateFormat;
2627
import java.text.SimpleDateFormat;
@@ -229,4 +230,18 @@ public static String collectThrow(Throwable ex) {
229230
printWriter.close();
230231
return writer.toString();
231232
}
233+
234+
public static Context makeContextSafe(Context context) {
235+
if (context != null) {
236+
return context;
237+
}
238+
try {
239+
Class actThreadClass = Reflect28Util.forName("android.app.ActivityThread");
240+
Method method = Reflect28Util.getDeclaredMethod(actThreadClass, "currentApplication");
241+
return (Context) method.invoke(null);
242+
} catch (Exception e) {
243+
e.printStackTrace();
244+
return null;
245+
}
246+
}
232247
}

0 commit comments

Comments
 (0)