Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图片发布到Facebook wall(android)时出现空指针异常_Android_Facebook_Nullpointerexception - Fatal编程技术网

将图片发布到Facebook wall(android)时出现空指针异常

将图片发布到Facebook wall(android)时出现空指针异常,android,facebook,nullpointerexception,Android,Facebook,Nullpointerexception,我的应用程序旨在允许用户拍照,然后上传到他们的Facebook墙上。以下代码与其他SO问题中给出的许多其他工作代码示例非常相似,但仍然给出了空指针异常: private void postOnWall() { final String response = ""; try { Bundle params = new Bundle(); params.putString("message", getMessage())

我的应用程序旨在允许用户拍照,然后上传到他们的Facebook墙上。以下代码与其他SO问题中给出的许多其他工作代码示例非常相似,但仍然给出了空指针异常:

    private void postOnWall()
    {
        final String response = "";
    try
    {
        Bundle params = new Bundle();
        params.putString("message", getMessage());
        params.putByteArray("picture", byteArray);
        mAsyncRunner.request(me/feed, params, "POST", new SampleUploadListener(),
        null);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }       
}
我只想让图片上传工作之前,我可以继续添加它的消息。有什么想法吗

编辑: 以下是AsyncRunner(…)行附带的SampleUploadListener():

日志:

06-22 13:23:45.136: W/System.err(20667): java.lang.NullPointerException
06-22 13:23:45.136: W/System.err(20667):    at     com.uncc.cci.TrashPickup.TrashPickupActivity.postwall(TrashPickupActivity.java:475)
06-22 13:23:45.136: W/System.err(20667):    at com.uncc.cci.TrashPickup.TrashPickupActivity$5$1.onClick(TrashPickupActivity.java:230)
06-22 13:23:45.140: W/System.err(20667):    at android.view.View.performClick(View.java:3511)
06-22 13:23:45.140: W/System.err(20667):    at android.view.View$PerformClick.run(View.java:14105)
06-22 13:23:45.140: W/System.err(20667):    at android.os.Handler.handleCallback(Handler.java:605)
06-22 13:23:45.140: W/System.err(20667):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-22 13:23:45.140: W/System.err(20667):    at android.os.Looper.loop(Looper.java:137)
06-22 13:23:45.140: W/System.err(20667):    at android.app.ActivityThread.main(ActivityThread.java:4424)
06-22 13:23:45.144: W/System.err(20667):    at java.lang.reflect.Method.invokeNative(Native Method)
06-22 13:23:45.144: W/System.err(20667):    at java.lang.reflect.Method.invoke(Method.java:511)
06-22 13:23:45.144: W/System.err(20667):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-22 13:23:45.144: W/System.err(20667):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-22 13:23:45.148: W/System.err(20667):    at dalvik.system.NativeStart.main(Native Method)
应该是:

private void postOnWall() {
    Bundle params = new Bundle();            
    params.putString("message", "New picture");
    params.putByteArray("source", byteArray);
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null);
}
您将路径发送为null,这可能就是为什么会出现null指针异常。
同样根据图像参数名称,图像参数名称为
source


编辑 尝试此操作以检查mAsyncRunner是否为空:

private void postOnWall() {
    Bundle params = new Bundle();            
    params.putString("message", "New picture");
    params.putByteArray("source", byteArray);
    Log.d("Facebook-Example", mAsyncRunner == null ? "mAsyncRunner is null" : "mAsyncRunner not null");
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null);
}

由于该错误是在该行中抛出的,因此这似乎是唯一可能的事情。

当您纠正了此处存在的任何错误后,您将不幸地发现,此时无法通过将实际图像字节直接上传到facebook将图像发布到墙上。您可以将照片上载到他们的照片库,但不能上载到他们的墙上。若要将照片张贴到墙上,照片必须已经在线,您需要提供一个链接,指向照片所在的位置以及其他数据。如果我错了,那么这是一个非常新的发展,因为我几个月前刚刚遇到了所有这些,甚至向Facebook提交了一个bug,他们拒绝说“这不是bug,这是我们想要的”

如果你同意将照片放在他们的图库中(如果这是图库中唯一的一张照片,它看起来几乎完全像一个普通的墙柱),这是一种方法:

您有要加载的图片吗
NullPointerException
通常在调用
对象时抛出,而
null
对象不应为
null
。哪一行(请查阅LogCat或发布)?@Yawus:'byteArray'是我已经处理过的位图中的字节数组。我检查了它,看它是否为空。@MichałK:mAsyncRunner.request(…)行给出了空指针exceptionWell、
params
“POST”
new SampleUploadListener()
肯定不是空的。它必须是这两个
null
s中的一个,它为您提供了NPE。只需检查应该放在那里的内容(我不知道您的
mAsyncRunner
是什么类型的对象)并将其发布,而不是
null
。我更改了代码以反映您的建议,但不幸的是,我仍然在同一行上收到相同的null指针异常。我的SampleUploadListener()中是否有任何可能导致此问题的内容?能否发布修改后的代码和SampleUploadListener的代码?我已更新了我的问题,以反映更改、uploadListener和日志您确定已构建
mAsyncRunner
吗?是的,它是AsyncFacebookRunner类型的(来自com_facebook_android)。我刚刚查阅了相关文档,发现了以下内容:“使用给定的HTTP方法和字符串参数向facebook Graph API发出请求。请注意,此助手函数尚不支持二进制数据参数(例如图片)。”我在这里看到了许多其他帖子,它们使用了相同的方法(使用HTTP“POST”参数)这声称成功发布了字节数组图像,所以这让我感到困惑。我在更仔细地阅读了他们的文档后得出了这个结论,但希望他们同时发布了更合适的内容。不幸的是,将照片上传到他们的图库对应用程序来说不是一个好计划,所以我会找到另一个解决问题。谢谢你的回答,证实了我的恐惧!
private void postOnWall() {
    Bundle params = new Bundle();            
    params.putString("message", "New picture");
    params.putByteArray("source", byteArray);
    Log.d("Facebook-Example", mAsyncRunner == null ? "mAsyncRunner is null" : "mAsyncRunner not null");
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null);
}