Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
Java 在facebook android sdk中处理传入通知时,请求id为null_Java_Android_Facebook_Facebook Android Sdk_Facebook App Requests - Fatal编程技术网

Java 在facebook android sdk中处理传入通知时,请求id为null

Java 在facebook android sdk中处理传入通知时,请求id为null,java,android,facebook,facebook-android-sdk,facebook-app-requests,Java,Android,Facebook,Facebook Android Sdk,Facebook App Requests,我正在尝试处理facebook中的传入通知 参考: 代码: public class MainFragment extends Fragment{ private static final String TAG = "MainFragment"; private UiLifecycleHelper uiHelper; private String requestId; private TextView username; @Override public void onCreate(Bund

我正在尝试处理facebook中的传入通知

参考:

代码:

public class MainFragment extends Fragment{

private static final String TAG = "MainFragment";
private UiLifecycleHelper uiHelper;
private String requestId;
private TextView username;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.d(TAG, "MainFragment.onCreate()");
    uiHelper = new UiLifecycleHelper(getActivity(), callback);
    uiHelper.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    Log.d(TAG, "MainFragment.onCreateView()");
    View view = inflater.inflate(R.layout.login,container, false);

    LoginButton authButton = (LoginButton) view.findViewById(R.id.loginButton);
    authButton.setReadPermissions(Arrays.asList("user_likes", "user_status"));
    authButton.setFragment(this);

    username = (TextView) view.findViewById(R.id.textusename);

    return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    Log.d(TAG, "MainFragment.onActivityCreated()");

    // Check for an incoming notification. Save the info
    // Parse any incoming notifications and save

    Uri intentUri = getActivity().getIntent().getData();
    if (intentUri != null) {
        String requestIdParam = intentUri.getQueryParameter("request_ids");
        if (requestIdParam != null) {
            String array[] = requestIdParam.split(",");
            requestId = array[0];
        }
    }


}

private void onSessionStateChange(Session session, SessionState state, Exception exception) {

    // Check if the user is authenticated and
    // an incoming notification needs handling 
    Log.d(TAG,"MainFragment.onSessionStateChange()");

    Log.d(TAG, "Request id : "+requestId);

    if (state.isOpened() && requestId != null) {
        Log.d("request id", requestId);

        getRequestData(requestId);

        Toast.makeText(getActivity().getApplicationContext(), "Incoming request", Toast.LENGTH_SHORT).show();
        requestId = null;
    }

    if (state.isOpened())
    {
        Settings.addLoggingBehavior(LoggingBehavior.REQUESTS);


        Request.executeMeRequestAsync(Session.getActiveSession(), new GraphUserCallback() {

            @Override
            public void onCompleted(GraphUser user, Response response) {
                if (user != null) {
                    username.setText(user.getName());
                }                   
            }
        });

    }



}

private Session.StatusCallback callback = new Session.StatusCallback() {

    @Override
    public void call(Session session, SessionState state, Exception exception) {

        onSessionStateChange(session, state, exception);
    }
};

private void getRequestData(String requestid)
{
    Request request = new Request(Session.getActiveSession(), requestid, null, HttpMethod.GET, new Request.Callback() {

        @Override
        public void onCompleted(Response response) {

            // Process the returned response
            GraphObject graphObject = response.getGraphObject();
            FacebookRequestError error = response.getError();

            Log.d(TAG, response.toString());

            // 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(graphObject.getProperty("data").toString());

                        // 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 (Exception e) {
                        e.printStackTrace();
                    }
                }
                Toast.makeText(getActivity().getApplicationContext(),message,Toast.LENGTH_LONG).show();
            }

        }
    });

    Log.d(TAG, "Request : "+request.toString());

    // Execute the request asynchronously.
    Request.executeBatchAsync(request);

}
}
Logcat

03-02 17:40:20.443: D/MainFragment(947): MainFragment.onCreate()
03-02 17:40:20.463: D/MainFragment(947): MainFragment.onCreateView()
03-02 17:40:20.753: D/MainFragment(947): MainFragment.onActivityCreated()
03-02 17:40:28.623: D/MainFragment(947): MainFragment.onSessionStateChange()
03-02 17:40:28.623: D/MainFragment(947): Request id : null
03-02 17:40:30.673: D/MainFragment(947): MainFragment.onSessionStateChange()
03-02 17:40:30.673: D/MainFragment(947): Request id : null
03-02 17:40:30.823: D/MainFragment(947): MainFragment.onSessionStateChange()
03-02 17:40:30.833: D/MainFragment(947): Request id : null
现在我的问题是,当我使用Facebook android应用程序点击通知时,我的应用程序启动了,但我无法获取该通知的请求id

应用程序仪表板配置

我想您没有忘记
requestId
属性:

private String requestId;
您还可以检查
onActivityCreated
方法中的
intentUri
requestIdParam
array[0]
的值吗

@Override
public void onActivityCreated(Bundle savedInstanceState) { // <--- in THIS method
    super.onActivityCreated(savedInstanceState);
    Log.d(TAG, "MainFragment.onActivityCreated()");

    // Check for an incoming notification. Save the info
    Uri intentUri = getActivity().getIntent().getData();
    Log.d(TAG, "intentUri: " + intentUri.toString()); // <--- HERE
    if (intentUri != null) {
        String requestIdParam = intentUri.getQueryParameter("request_ids");
        Log.d(TAG, "requestIdParam: " + requestIdParam); // <--- HERE
        if (requestIdParam != null) {
            String array[] = requestIdParam.split(",");
            Log.d(TAG, "requestId: " + array[0]); // <--- HERE
            requestId = array[0];
        }
    }
}
但是,您无法获得
请求\u id
参数。在我看来,以下配置有问题:

你在这些字段中输入了什么?它与你的实际应用程序相符吗

编辑2:

类名:这是您想要的主要活动的类名 Facebook即将发布

您的
Login.java中有什么内容

它应该是
com.pricus.expensemanagement.MainActivity

确保您正确地遵循了以下步骤,尤其是:

首先,使活动子类FragmentActivity代替 活动:


这是一个我花了一整天时间解决的问题。多亏了波班

这是Facebook的bug。只需在应用程序仪表板中添加移动Web,您将获得请求ID


否,我要求您打印上述变量的值。在此处使用
语句进行后期编辑。这样做,然后用三个
log.d
的结果进行回答。在logcat中,我将再次读取我的最后一条评论并回答请求。真不敢相信你的帖子增加了+50,你甚至都懒得认真回答。我想要3(三)个值。对不起。我已经添加了logcat输出了。真的吗?这仍然不是我想要的。我从一开始就知道,requestId在
onSessionStateChange
中为空。您的logcat输出说明了我们已经知道的内容。但是告诉我,你读过我写的东西吗?我要求您在
onActivityCreated
方法中添加3个
logs.d
。在三次评论之后,你仍然不理解,我们根本没有进步。(好的,我会给你一个提示,因为我很好:你只需要将我的
onActivityCreated
方法复制/粘贴到你的代码中)。然后再次更新logcat输出。你好,Nick,我有同样的问题,你也可以检查我的问题。如果可能的话,请帮我解决这个问题。
target_url=[URL]/?request_ids=[COMMA_SEPARATED_REQUESTIDs]
    &ref=notif&fb_source=notification
    &app_request_type=user_to_user
public class MainActivity extends FragmentActivity {