【发布时间】:2012-07-23 07:35:25
【问题描述】:
我确实有一个旧应用程序拒绝在 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);
}
}
...在扩展的应用程序类中调用:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
try {
StrictModeWrapper.checkAvailable();
StrictModeWrapper.setThreadPolicy();
} catch (Throwable throwable) {
}
}
}
扩展的应用程序类已在清单中注册并正在工作。
【问题讨论】:
-
几岁?您必须在主线程上进行一些网络操作。
StrictMode自 API-9 以来支持,NetworkOnMainThreadException在 API-11 中引入
标签: android android-strictmode