0

我完成了使用 android 发送请求的工作,阅读https://developers.facebook.com/docs/howtos/androidsdk/3.0/send-requests/

但我在处理请求时遇到问题。

https://developers.facebook.com/docs/howtos/androidsdk/3.0/app-link-requests/ 我想我做了它告诉我做的事情,但我无法获得 uri 和 requestid 他们都是空的.

我的问题是,当我收到请求时,我无法单击接受按钮。它说Playstore找不到该应用程序。所以请求不会消失。

我该如何解决这个问题?

公共类 MainActivity 扩展 Activity {

private static final List<String> PERMISSIONS = Arrays
        .asList("read_requests");

private Bundle SIS;

private Session.StatusCallback logincallback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        // TODO Auto-generated method stub

        if (session.isOpened()) {
            updateview();
            getp();
            loginlogoutbutton.setText("Login");
            onSessionStateChange(session, state, exception);
        } else {

        }
    }
};

public void updateview() {

    Session session = Session.getActiveSession();
    if (session.isOpened()) {

        Request.executeMeRequestAsync(session,
                new Request.GraphUserCallback() {
                    public void onCompleted(GraphUser user,
                            Response response) {
                        if (user != null) {
                            tt.setText(user.getId());
                        }
                    }
                });
    } else

    {
        tt.setText("Login");
    }
}

private Button loginlogoutbutton;
private Button sendrequestbutton;
private Button testbtn;
private TextView tt;
private String app_id = "APP ID";
private String requestId;



public void getp() {
    Session session = Session.getActiveSession();
    if (session == null || !session.isOpened()) {
        return;
    }
    List<String> permissions = session.getPermissions();
    if (!permissions.containsAll(PERMISSIONS)) {
        session.requestNewPublishPermissions(new Session.NewPermissionsRequest(
                this, PERMISSIONS)
                .setCallback(new Session.StatusCallback() {

                    @Override
                    public void call(Session session, SessionState state,
                            Exception exception) {
                        // TODO Auto-generated method stub

                    }
                }));
    } else {
    }
}

@Override
public void onResume() {
    super.onResume();
    checkforrequest();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SIS = savedInstanceState;

    tt = (TextView) findViewById(R.id.tex);
    loginlogoutbutton = (Button) findViewById(R.id.loginlogoutbtn);
    loginlogoutbutton.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            onClickLoginLogout();
        }
    });

    sendrequestbutton = (Button) findViewById(R.id.sendrequest);
    sendrequestbutton.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            sendRequestDialog();
        }
    });

    testbtn = (Button) findViewById(R.id.button1);
    testbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            checkforrequest();
        }
    });

    ConfirmLogin(app_id);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

public boolean ConfirmLogin(String iappid) {
    app_id = iappid;
    Session session = Session.getActiveSession();

    boolean dd = true;
    if (session == null) {
        if (SIS != null) {
            session = Session.restoreSession(this, null,
                    new Session.StatusCallback() {

                        @Override
                        public void call(Session session,
                                SessionState state, Exception exception) {
                            // TODO Auto-generated method stub

                        }
                    }, SIS);
        }
        if (session == null) {
            session = new Session.Builder(this).setApplicationId(app_id)
                    .build();
        }
        Session.setActiveSession(session);

        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this)
                    .setCallback(logincallback));
            dd = true;
        } else {
            dd = false;
        }
    }

    return dd;
}

public void onClickLoginLogout() {
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {

        session.openForRead(new Session.OpenRequest(this)
                .setCallback(logincallback));

    } else if (session.isClosed()) {

        session = new Session.Builder(this).setApplicationId(app_id)
                .build();
        Session.setActiveSession(session);
        session.openForRead(new Session.OpenRequest(this)
                .setCallback(logincallback));
    } else {
        session.closeAndClearTokenInformation();
        loginlogoutbutton.setText("Login");
    }
}

private void sendRequestDialog() {
    Bundle params = new Bundle();
    params.putString("message",
            "Learn how to make your Android apps social");
    params.putString("data", "{\"badge_of_awesomeness\":\"1\","
            + "\"social_karma\":\"5\"}");

    WebDialog requestsDialog = (new WebDialog.RequestsDialogBuilder(this,
            Session.getActiveSession(), params)).setOnCompleteListener(
            new OnCompleteListener() {

                @Override
                public void onComplete(Bundle values,
                        FacebookException error) {
                    if (error != null) {
                        if (error instanceof FacebookOperationCanceledException) {
                        } else {
                        }
                    } else {
                        final String requestId = values
                                .getString("request");
                        if (requestId != null) {
                            maketoast(requestId);
                        } else {
                        }
                    }
                }

            }).build();
    requestsDialog.show();
}

public void checkforrequest() {
    maketoast("0");
    Uri intentUri = this.getIntent().getData();
    if (intentUri != null) {
        String requestIdParam = intentUri.getQueryParameter("request_ids");
        maketoast("1 : " +requestIdParam);
        if (requestIdParam != null) {
            String array[] = requestIdParam.split(",");
            requestId = array[0];
        }
    }
    else
    {
        maketoast("uri = null");
    }
}

public void maketoast(String message) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

private void getRequestData(final String inRequestId) {
    // Create a new request for an HTTP GET with the
    // request ID as the Graph path.
    maketoast("2");
    Request request = new Request(Session.getActiveSession(), inRequestId,
            null, HttpMethod.GET, new Request.Callback() {

                @Override
                public void onCompleted(Response response) {
                    // Process the returned response
                    GraphObject graphObject = response.getGraphObject();
                    FacebookRequestError error = response.getError();
                    // Default message
                    String message = "Incoming request";
                    if (graphObject != null) {
                        // Check if there is extra data
                        if (graphObject.getProperty("data") != null) {
                            try {
                                // Get the data, parse info to get the
                                // key/value info
                                JSONObject dataObject = new JSONObject(
                                        (String) graphObject
                                                .getProperty("data"));
                                // Get the value for the key -
                                // badge_of_awesomeness
                                String badge = dataObject
                                        .getString("badge_of_awesomeness");
                                // Get the value for the key - social_karma
                                String karma = dataObject
                                        .getString("social_karma");
                                // Get the sender's name
                                JSONObject fromObject = (JSONObject) graphObject
                                        .getProperty("from");
                                String sender = fromObject
                                        .getString("name");
                                String title = sender + " sent you a gift";
                                // Create the text for the alert based on
                                // the sender
                                // and the data
                                message = title + "\n\n" + "Badge: "
                                        + badge + " Karma: " + karma;
                            } catch (JSONException e) {
                                message = "Error getting request info";
                            }
                        } else if (error != null) {
                            message = "Error getting request info";
                        }
                    }
                    maketoast(message);
                }
            });
    // Execute the request asynchronously.
    Request.executeBatchAsync(request);
}

private void onSessionStateChange(Session session, SessionState state,
        Exception exception) {
    // Check if the user is authenticated and
    // an incoming notification needs handling
    if (state.isOpened() && requestId != null) {
        maketoast("3");
        getRequestData(requestId);
        requestId = null;
    } else if (requestId == null) {
        maketoast("4");

    }
    if (state.isOpened()) {
    } else if (state.isClosed()) {
    }
}

}

这是代码。

4

0 回答 0