Android 4.1 デバイスで動作しない古いアプリがあります。ここでジャンプするのは NetworkOnMainThreadException です。
そこで、次の手順でこれを許可しようとしましたが、うまくいきません。4.1エミュレーターでテストしました。そのエラーを回避するために本当に必要なもの - アプリの書き換えはオプションではありません。現在、アプリから 4.1 デバイスを除外しています。
クラスファイル...
public class StrictModeWrapper {
static {
try {
Class.forName("android.os.StrictMode");
} catch (Exception exception) {
throw new RuntimeException(exception);
}
}
public static void checkAvailable() {
}
@SuppressLint("NewApi")
public static void setThreadPolicy() {
StrictMode.ThreadPolicy strictModeThreadPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(strictModeThreadPolicy);
}
}
... 拡張された Application クラスで呼び出されます:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
try {
StrictModeWrapper.checkAvailable();
StrictModeWrapper.setThreadPolicy();
} catch (Throwable throwable) {
}
}
}
拡張された Application クラスがマニフェストに登録され、機能します。