2016-03-23 20 views
1

私はFacebookの活動の成功をログインするとき、私は2つの活動があります。それは自動オープンアクティビティ2であり、データと画像を転送します。しかし、それは動作しません。私を助けてください! 問題は、別のアクティビティ権を呼び出して、認証に成功した後にデータを転送する方法です。ログインfacebookボタン。私は他の投稿を読んできましたが、私を助けた解決策はありません。ログインfacebookが成功したときにアクティビティを開くには?

活動

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     setContentView(R.layout.activity_main); 
     callbackManager = CallbackManager.Factory.create(); 
     login = (LoginButton)findViewById(R.id.login_button); 
     profile = (ProfilePictureView)findViewById(R.id.picture); 
     shareDialog = new ShareDialog(this); 
     share = (Button)findViewById(R.id.share); 
     details = (Button)findViewById(R.id.details); 
     login.setReadPermissions("public_profile email"); 
     share.setVisibility(View.INVISIBLE); 
     details.setVisibility(View.INVISIBLE); 
     details_dialog = new Dialog(this); 
     details_dialog.setContentView(R.layout.dialog_details); 
     details_dialog.setTitle("Details"); 
     details_txt = (TextView)details_dialog.findViewById(R.id.details); 
     email = (TextView) findViewById(R.id.email); 
     details.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       details_dialog.show(); 
      } 
     }); 

     if(AccessToken.getCurrentAccessToken() != null){ 
      RequestData(); 
      share.setVisibility(View.VISIBLE); 
      details.setVisibility(View.VISIBLE); 
     } 
     login.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if(AccessToken.getCurrentAccessToken() != null) { 

        share.setVisibility(View.INVISIBLE); 
        details.setVisibility(View.INVISIBLE); 
//     profile.setProfileId(null); 
//     email.setText(""); 

       } 

      } 
     }); 
     accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, 
                 AccessToken currentAccessToken) { 
       if (currentAccessToken == null) { 
        //write your code here what to do when user logout 
        profile.setProfileId(null); 
        email.setText(""); 
       } 
      } 
     }; 
     share.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       ShareLinkContent content = new ShareLinkContent.Builder().build(); 
       shareDialog.show(content); 

      } 
     }); 
     login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       if(AccessToken.getCurrentAccessToken() != null){ 
        RequestData(); 
        share.setVisibility(View.VISIBLE); 
        details.setVisibility(View.VISIBLE); 

       } 
      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException error) { 
       Log.e(TAG, "onError: " + error.getMessage()); 
      } 
     }); 

    } 

    public void RequestData(){ 
     GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject object, GraphResponse response) { 

       JSONObject json = response.getJSONObject(); 
       try { 
        if (json != null) { 
         String text = "<b>Name :</b> " + json.getString("name") + "<br><br><b>Email :</b> " + json.getString("email") + "<br><br><b>Profile link :</b> " + json.getString("link"); 
         details_txt.setText(Html.fromHtml(text)); 
         profile.setProfileId(json.getString("id")); 
         email.setText(json.getString("email")); 
        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 

     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,name,link,email,picture"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
     Intent intent=new Intent(MainActivity.this,Main2Activity.class); 
     String emails=email.getText().toString(); 
     intent.putExtra("emails", emails);   
     intent.putExtra("BitmapImage", profile); 
     startActivity(intent); 
    } 

} 

activiti2

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main2); 
     username = (TextView) findViewById(R.id.textView); 
     imageView = (ImageView) findViewById(R.id.imageView); 
     String value=getIntent().getStringExtra("emails"); 
     username.setText(value); 
    } 

答えて

0

はあなたのactivityonSuccessメソッドを起動します。

login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       if(AccessToken.getCurrentAccessToken() != null){ 
        RequestData(); 
        share.setVisibility(View.VISIBLE); 
        details.setVisibility(View.VISIBLE); 

       } 
      } 
+0

ありがとうございます、それは動作していますが、私は2つのアクティビティの間でイメージトランスレーションイメージを与えることができますか? –

+0

アクティビティ間でビットマップを転送することができます。これは、イメージをビットマップに変換し、アクティビティを通して転送できるように、オブジェクトをparcableにするためです。 – KDeogharkar

+0

もし役に立つならば@tonyHoang。私の答えを受け入れる。 – KDeogharkar

1
は、このようにコードを変更し

login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       if(AccessToken.getCurrentAccessToken() != null){ 
        RequestData(); 
        share.setVisibility(View.VISIBLE); 
        details.setVisibility(View.VISIBLE); 

       } 
Intent intent=new Intent(MainActivity.this,Main2Activity.class); 
     String emails=email.getText().toString(); 
     intent.putExtra("emails", emails);   
     intent.putExtra("BitmapImage", profile); 
     startActivity(intent); 
      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException error) { 
       Log.e(TAG, "onError: " + error.getMessage()); 
      } 
     }); 



@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 

私はこれが働くだろう願っています。

+0

ありがとうございました –

関連する問題