Intereting Posts
Android ListView с OnItemClickListener и GestureDetector Как просмотреть и выбрать файл с SD-карты с помощью Phonegap 3.0? Менеджер Alarm сохраняется даже после перезагрузки? Почему я получаю исключение InstantiationException, если пытаюсь запустить службу? Не удалось установить версию репозитория поддержки поддержки Android 35 Добавление пользовательского шрифта android с помощью lib AdjustResize не работает в леденец и выше с полупрозрачным статусом / Nav Как сгенерировать несколько apk (используя gradle, libGDX) Android – получение ошибки «приложение не может выполнить это действие» при попытке отправить электронное письмо? Listview с пользовательским адаптером, содержащим CheckBoxes Разрешение значений ресурсов в пользовательском правиле lint Порядок сортировки не работает с listView и загрузчиком курсора Java.util.LinkedHashMap не может быть передан в DataList Android ProgressBar: как установить вторичный цвет программно Настройка компонентов Android Manifest

Как поделиться изображением с помощью Facebook android

Я пытаюсь поделиться имиджем и контентом через Facebook, но то, что я пытаюсь, заключается в том, что пользователь не регистрируется через Facebook, а пользователь нажимает кнопку «Поделиться», а затем сначала запрашивает логин, но когда я запускаю свой код, я не получаю Ошибка, но ничего не происходит на экране, и она идет в моей другой части, а в logcat отображается сообщение о другой части

адаптер

holder.sharefb.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if (strtextfb == null) { share(); } } }); 

методы

  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")); // System.out.println("FbId" + fbids); } } catch (JSONException e) { e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,link,email,picture"); request.setParameters(parameters); request.executeAsync(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } public void share() { if (AccessToken.getCurrentAccessToken() != null) { RequestData(); String pictureUrl = "https://upload.wikimedia.org/wikipedia/en/9/90/Bale_as_Batman.jpg"; Bundle params = new Bundle(); params.putString("name", "" + "Aditya"); params.putString("message", "" + "Nver Give Up"); params.putString("caption", "" + "Hi"); params.putString("description", "" + "Lie Cheat Steal"); params.putString("link", "" + "https://www.google.co.in/"); if (pictureUrl != "") params.putString("picture", "" + pictureUrl); /* make the API call */ new GraphRequest( AccessToken.getCurrentAccessToken(), "/me/feed", params, HttpMethod.POST, new GraphRequest.Callback() { public void onCompleted(GraphResponse response) { /* handle the result */ Log.e("res", "" + response.getError()); } } ).executeAsync(); } else { LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) { } }); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }); System.out.println("else part"); } } 

Вам нужно позвонить под кодом нажатием кнопки из адаптера.

 List<String> permissionNeeds = Arrays.asList("publish_actions"); manager = LoginManager.getInstance(); manager.logInWithPublishPermissions(this, permissionNeeds); manager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { publishImage(); } @Override public void onCancel() { System.out.println("onCancel"); } @Override public void onError(FacebookException exception) { System.out.println("onError"); } }); } private void publishImage() { Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); //You need to get bitmap from any source. SharePhoto photo = new SharePhoto.Builder().setBitmap(image) .setCaption("Welcome To Facebook Photo Sharing on steroids!") .build(); SharePhotoContent content = new SharePhotoContent.Builder().addPhoto( photo).build(); ShareApi.share(content, null); Toast.makeText(this, "Succsesfully posted on your wall", Toast.LENGTH_LONG).show(); } 

В первый раз при попытке входа в систему токен доступа имеет значение NULL. Таким образом, это продолжается и дальше. Сделайте это иначе, я думаю, что это может сработать для вас:

 LoginManager.getInstance().registerCallback(mcallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) { } }); } }); 
 first add FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); permissionNeeds = Arrays.asList("publish_actions"); manager = LoginManager.getInstance(); **on onCreate and wirte below code in send button lick event** send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (isOnline()) { new WebView(MainActivity.this); manager.logInWithPublishPermissions(MainActivity.this, permissionNeeds); manager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { sharePhotoToFacebook(); } @Override public void onCancel() { System.out.println("onCancel"); } @Override public void onError(FacebookException exception) { exception.printStackTrace(); } }); alertDialog.dismiss(); } else { Toast.makeText(getBaseContext(), "Please check internet connection", Toast.LENGTH_SHORT).show(); } } }); private void sharePhotoToFacebook() { try { Log.i("Facebook Image", camera_pathname + ""); Bitmap image = BitmapFactory.decodeFile(camera_pathname); //Bitmap image = decodeFile(camera_pathname); image = getResizedBitmap(image); //Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); SharePhoto photo = new SharePhoto.Builder() .setBitmap(image) .setCaption(et_hashtag.getText().toString()) .build(); SharePhotoContent content = new SharePhotoContent.Builder() .addPhoto(photo) .build(); ShareApi.share(content, null); Toast.makeText(getBaseContext(), "Shared successfully", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } // manager.logOut(); }