1

我有以下问题。我编写了一个应用程序,当我在 android 清单文件中指定最小和最大 sdk 版本时,它无法正常工作。我最初并没有将其写入 android 清单文件。是 Eclipse 做的(这是正确的,因为我想要 11 作为最小 sdk 版本)。

所以这就是我的android清单文件中的内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.T1000flies"
        android:versionCode="1"
        android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.T1000flies.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

</manifest>

现在,当我删除以下部分时:

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

该应用程序没有任何问题。但是当它进入时它会崩溃。我想使用需要 Android SDK 11 的操作栏,所以我有点需要它。可能是什么导致的问题?

我的意思是它不起作用是它不显示数据。即使我只是将 TextView 添加到布局中,它也不起作用。我正在添加这样的 TextView

TextView test = new TextView(this);
test.setText("Test");
LinearLayout layout = new LinearLayout(this);
layout.addView(test);

当我删除 uses-sdk 部分时,该应用程序仅显示字符串“Test”。可能是什么问题呢?

此外,当我右键单击该项目并转到 Properties-Android 时,只勾选了 Android 4.3。那是对的吗?4.3 是 API 级别 18,所以我指定了 targetSDkversion。它可能不起作用,因为我正在具有 API 级别 16 的手机上尝试它吗?我删除了android:targetSdkVersion="18"一次以尝试这是否可能是问题,但它并没有解决它。现在我只有 android:minSdkVersion="11"

这是我在 LogCat 中遇到的异常

10-02 15:35:16.350: I/System.out(26656): XML Parsing Excpetion = android.os.NetworkOnMainThreadException
4

1 回答 1

3

API 级别 11 引入了对 UI 线程中网络操作的有用检查,抛出android.os.NetworkOnMainThreadException. 要正确解决这个问题,请在后台线程中执行网络操作,例如使用AsyncTask. 请参阅问题如何修复 android.os.NetworkOnMainThreadException?更多。

当您targetSdkVersion在清单中省略 时,它默认为minSdkVersion,如果也省略,则两者都默认为 1。为了保持向后兼容性,新的 API 功能(如主线程检查上的 API 级别 11 网络)仅对支持 API 的应用程序启用通过指定相同或更高的目标 SDK 版本来实现级别。

于 2013-10-02T13:45:24.130 回答