在vk中发布状态时出错

时间:2014-02-20 14:36:46

标签: android vk

我想在Android应用程序中集成vk。为此,我试图按照此链接中的以下说明操作。 Vk integration .

我已使用此代码成功登录vk。但在尝试在我的墙上发布状态后,我遇到了以下错误。

02-20 14:08:54.779: W/System.err(2945): java.lang.NullPointerException
02-20 14:08:54.789: W/System.err(2945):     at com.perm.kate.api.Api.createWallPost(Api.java:1200)
02-20 14:08:54.789: W/System.err(2945):     at com.perm.kate.api.sample.MainActivity$5.run(MainActivity.java:100)

在MainActivity.java的第100行中定义了以下代码。

api.createWallPost(account.user_id, text, null, null, false, false, false, null, null, null, null, null, null);

在API.java的第1200行中定义了以下代码。

public WallMessage repostWallPost(String object, String message, Long gid, String captcha_key, String captcha_sid) throws IOException, JSONException, KException{
        Params params = new Params("wall.repost");
        params.put("group_id", gid);
        params.put("message", message);
        params.put("object", object);
        addCaptchaParams(captcha_key, captcha_sid, params);
        JSONObject root = sendRequest(params);
        JSONObject response = root.getJSONObject("response");
        WallMessage wall=new WallMessage(); 
        wall.id = response.optLong("post_id");
        wall.like_count=response.optInt("likes_count");
        wall.reposts_count=response.optInt("reposts_count");
        return wall;
    }

createwallpost的方法定义如下:

public long createWallPost(long owner_id, String text, Collection<String> attachments, String export, boolean only_friends, boolean from_group, boolean signed, String lat, String lon, Long publish_date, Long post_id, String captcha_key, String captcha_sid) throws IOException, JSONException, KException{
        Params params = new Params("wall.post");
        params.put("owner_id", owner_id);
        params.put("attachments", arrayToString(attachments));
        params.put("lat", lat);
        params.put("long", lon);
        params.put("message", text);
        if(export!=null && export.length()!=0)
            params.put("services",export);
        if (from_group)
            params.put("from_group","1");
        if (only_friends)
            params.put("friends_only","1");
        if (signed)
            params.put("signed","1");
        params.put("publish_date", publish_date);
        if (post_id > 0)
            params.put("post_id", post_id);
        addCaptchaParams(captcha_key, captcha_sid, params);
        JSONObject root = sendRequest(params, true);
        JSONObject response = root.getJSONObject("response");
        long res_post_id = response.optLong("post_id");
        return res_post_id;
    }

是什么原因?你能帮我消除这个错误吗?

2 个答案:

答案 0 :(得分:1)

您可以直接使用VK Android Sdk。我使用VKShareDialog

new VKShareDialogBuilder().setText("Title share")
                          .setAttachmentImages(new VKUploadImage[]{new VKUploadImage(bitmap, VKImageParameters.pngImage())})
                          .setAttachmentLink("Link title", myURL)
                          .setShareDialogListener(new VKShareDialog.VKShareDialogListener() {
                                    public void onVkShareComplete(int postId) {
                                        Toast.makeText(context, "Shared sucessfully", Toast.LENGTH_SHORT).show();
                                    }

                                    public void onVkShareCancel() {
                                        Toast.makeText(context, "Share cancelled", Toast.LENGTH_SHORT).show();
                                    }

                                    @Override
                                    public void onVkShareError(VKError error) {
                                        Toast.makeText(context, "Failed to share", Toast.LENGTH_SHORT).show();
                                    }
                                })
                         .show(activity.getSupportFragmentManager(), "VK_SHARE_DIALOG");

要在墙上发布,您需要一些授权:

VKSdk.login(ActivityLogin.this,VKScope.FRIENDS,VKScope.WALL,VKScope.PHOTOS);

答案 1 :(得分:0)

这对我有所帮助:

  

api.createWallPost(account.user_id,message,null,null,false,false,false,null,null,new Long(0),new Long(0),null,null);

我希望它对你有所帮助