Я использую официальный Android-сайт sdk для публикации фотографий на стене, но он выходит из строя после входа в систему, разрешая приложению разрешение на мою учетную запись. Я использую библиотеку android 3.1 для этого приложения.
Ниже приведен код, который я использую для публикации фотографии на стене,
facebook.authorize(ImageCropShare.this, new String[] { "publish_stream" },
new DialogListener() {
@Override
public void onFacebookError(FacebookError e) {
// TODO Auto-generated method stub
}
@Override
public void onError(DialogError dialogError) {
// TODO Auto-generated method stub
}
@Override
public void onComplete(Bundle values) {
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, values.getString(Facebook.TOKEN));
params.putByteArray("picture", data); // here data is byte array of bitmap image
try {
facebook.request("me/photos", params, "POST");
} catch (FileNotFoundException fileNotFoundException) {
// makeToast(fileNotFoundException.getMessage());
} catch (MalformedURLException malformedURLException) {
// makeToast(malformedURLException.getMessage());
} catch (IOException ioException) {
// makeToast(ioException.getMessage());
}
try {
facebook.logout(getApplicationContext());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onCancel() {
// TODO Auto-generated method stub
try {
facebook.logout(getApplicationContext());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
следующая - это функция, с помощью которой я получаю массив байтов из растрового изображения
public byte[] bitmapTobyte(Bitmap bitmap)
{
byte[] data = null;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
data = stream.toByteArray();
return data;
}
и следующий - мой журнал ошибок
01-04 11:44:04.022: E/AndroidRuntime(480): FATAL EXCEPTION: main
01-04 11:44:04.022: E/AndroidRuntime(480): android.os.NetworkOnMainThreadException
01-04 11:44:04.022: E/AndroidRuntime(480): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
01-04 11:44:04.022: E/AndroidRuntime(480): at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
01-04 11:44:04.022: E/AndroidRuntime(480): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
01-04 11:44:04.022: E/AndroidRuntime(480): at java.net.InetAddress.getAllByName(InetAddress.java:249)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:447)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:419)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:217)
01-04 11:44:04.022: E/AndroidRuntime(480): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:177)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.Util.openUrl(Util.java:178)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.Facebook.request(Facebook.java:563)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.mazda.cx5app.imagecrop.ImageCropShare$2$1.onComplete(ImageCropShare.java:123)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.Facebook$1.onComplete(Facebook.java:308)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:145)
01-04 11:44:04.022: E/AndroidRuntime(480): at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:222)
01-04 11:44:04.022: E/AndroidRuntime(480): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:322)
01-04 11:44:04.022: E/AndroidRuntime(480): at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 11:44:04.022: E/AndroidRuntime(480): at android.os.Looper.loop(Looper.java:132)
01-04 11:44:04.022: E/AndroidRuntime(480): at android.app.ActivityThread.main(ActivityThread.java:4025)
01-04 11:44:04.022: E/AndroidRuntime(480): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 11:44:04.022: E/AndroidRuntime(480): at java.lang.reflect.Method.invoke(Method.java:491)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
01-04 11:44:04.022: E/AndroidRuntime(480): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
01-04 11:44:04.022: E/AndroidRuntime(480): at dalvik.system.NativeStart.main(Native Method)
Пожалуйста, помогите мне решить эту ошибку заранее.