2016-03-23 17 views
1

Facebook etkinliğini başarıyla başlattığımda iki etkinliğim var. Otomatik açık etkinlik 2 olacak ve veri ve resim transfer edecek. Ama işe yaramıyor. Lütfen bana yardım et! Sorun, başka bir etkinlik hakkını nasıl çağırmanız gerektiği ve yetkilendirildikten sonra verileri aktarmanın facebook butonuyla başarılı olması. Başka yazılar okuyorum ama bana yardımcı olan bir çözüm yok.Giriş facebook başarısı ne zaman etkinlik açılır?

Etkinlik

@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); 
    } 

cevap

0

sizin activity yılında onSuccess yöntemini başlatın.

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

Teşekkürler, çalışıyor, ama 2 aktivite arasında bana çözüm transfer resmi verebilir misiniz? –

+0

bitmap'i etkinlik arasında transfer edebilir, çünkü parcable nesnesidir, böylece görüntünüzü bitmap'e dönüştürebilir ve aktiviteyle aktarabilirsiniz. – KDeogharkar

+0

Eğer bu yararlı @tonyHoang. Cevabımı kabul et. – KDeogharkar

1
böyle kodunuzu değiştirin

:

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); 
    } 

İşe yarayacağını umuyoruz.

+0

Teşekkürler, çalışıyor –

İlgili konular