1

今、私は2つの機能を試しました。最初の機能(以下)は機能し、このアクティビティを開始するアクティビティでデータを取得します:

private void updateView() {
    Session session = Session.getActiveSession();
    if (session.isOpened()) {
        if (first) {
            if (session.getAccessToken() != null) {
                LogService.log("session", "session.getAccessToken(): " + session.getAccessToken());
            }
            Intent result = new Intent();
            result.putExtra("FB_DATA", new String[] { "1", "2", "userNume", "userPrenume" });
            FacebookLoginPage.this.setResult(Activity.RESULT_OK, result);
            FacebookLoginPage.this.finish()
            first = false;
        }
    }
}

次に、数秒で Facebook からデータを取得し、インテントを呼び出すハンドラーに送信します。これにより、常にアプリケーションが閉じられます。結果を待っているアクティビティの onDestroy メソッドが閉じられ、その理由がわかりません。

  private void updateView() {
    Session session = Session.getActiveSession();
    if (session.isOpened()) {
        if (first) {
            if (session.getAccessToken() != null) {
                LogService.log("session", "session.getAccessToken(): " + session.getAccessToken());
            }
            Request.executeMeRequestAsync(session, new GraphUserCallback() {
                @Override
                public void onCompleted(final GraphUser user, Response response) {
                    handler.sendMessage(handler.obtainMessage(1, user));
                }
            });
            first = false;
        }
    }
}

Handler handler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
        GraphUser user = (GraphUser) msg.obj;
        if (user != null) {
            LogService.log("user email", "User=" + user);
            String userEmail = (String) user.getProperty("email");
            String id = (String) user.getId();
            String userNume = (String) user.getLastName();
            String userPrenume = (String) user.getFirstName();
            LogService.log("user email", userEmail + "||name: " + userNume + "|| prenume: " + userPrenume + "|| password: " + id);
            Intent result = new Intent();
            result.putExtra("FB_DATA", new String[] { id, userEmail, userNume, userPrenume });
            FacebookLoginPage.this.setResult(Activity.RESULT_OK, result);
        } else {
            FacebookLoginPage.this.setResult(Activity.RESULT_CANCELED);
        }
        System.out.println("----------------1");
        FacebookLoginPage.this.finish();
        System.out.println("----------------2");

    }
};

今 logcat はこれを言います (私は電子メール、名前、名、パスワードを変更しました):

03-14 12:11:29.301: I/user email(7119): email@yahoo.com||name: Name|| prenume: FirstName|| password: PASSWORD
03-14 12:11:29.301: I/System.out(7119): ----------------1
03-14 12:11:29.305: I/System.out(7119): ----------------2
03-14 12:11:29.313: I/Launcher(2610): onResume(). mIsNewIntent : false
03-14 12:11:29.313: I/Launcher(2610): onResume() ended
03-14 12:11:29.321: I/Launcher(2610): onWindowFocusChanged(true)
03-14 12:11:29.395: I/System.out(7119): ---------------LoginActivity.onDestroy()

logcat の最後の 4 行が何なのかわかりません。I/Launcher のものは私のコードではありません。そして最後の行は、このアクティビティを呼び出すアクティビティの ondestroy メソッドです。StartActivityForResultこれは、少なくともOnActivityResult関数に入る前に閉じるべきではありません。

4

0 に答える 0