我有以下奇怪的問題。無法使用asmack.jar啓動活動
我的主要活動如下:
public class CityGame extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent myIntent = new Intent(this, XMPPClient.class);
startActivity(myIntent);
}
}
我條紋的代碼到發現問題。上面的代碼只是直接跳轉到XMPPClient活動。 XMPPClient活動使用asmack.jar庫,並將該庫添加到我的eclipse構建路徑中。
的XMPPClient活動代碼:當我調用函數從asmack.jar LIB
public class XMPPClient extends Activity {
/**
* Called with the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("XMPPClient", "onCreate called");
//Create a connection to the jabber.org server.
Connection conn1 = new XMPPConnection("jabber.org");
try {
conn1.connect();
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
出現問題。例如,conn1.connect();
一遍又一遍地撞擊我的應用程序。我得到這樣的錯誤:
06-07 09:05:03.085: E/AndroidRuntime(538): FATAL EXCEPTION: main
06-07 09:05:03.085: E/AndroidRuntime(538): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.joop.citygame/com.joop.citygame.XMPPClient}: android.os.NetworkOnMainThreadException
06-07 09:05:03.085: E/AndroidRuntime(538): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
06-07 09:05:03.085: E/AndroidRuntime(538): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
06-07 09:05:03.085: E/AndroidRuntime(538): at android.app.ActivityThread.access$600(ActivityThread.java:122)
清單文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.joop.citygame"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:minSdkVersion="14" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".CityGame" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".XMPPClient" >
<intent-filter>
<action android:name="com.joop.citygame.XMPPClient" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
任何人有什麼我做錯了的想法?
信息:API級別14
我的代碼也有一個磁盤寫入違規:P 可能是asmack寫入磁盤 – Jochem
這是可能的。 :)你是如何選擇最終解決問題的? –
將strictmode代碼添加到我的onCreate()並觀看LogCat。 非常有用。 但我仍然需要爲連接製作一個額外的線程。 Android 4是否迫使開發人員以這種方式實現? – Jochem