Я создаю Android-приложение, в котором запрашивают у пользователя следующие разрешения: Разрешение по умолчанию + user_friends + publish_action.Facebook Permission Dialog не подсказывает
В моем первом действии я сделал вход + спросить разрешение «user_friends» и отлично поработал.
Теперь в моем втором действии я хочу попросить разрешение «publish_action» после выбора AlertDialog. Проблема заключается в том, что я никогда не был promped для коробки «publish_action», приложение пропустить запрос и идти вперед вызова другой вид деятельности (РЕЙТИНГИ)
Вот моя вторая активность:
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
final Context context = this;
//stuff
b_exit.setOnClickListener(new View.OnClickListener()
{
public void onClick(View V)
{
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(getString(R.string.salva_dati))
.setCancelable(true)
.setPositiveButton(getString(R.string.si), new DialogInterface.OnClickListener() {
public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
askForFBPublishPerm();
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.apply();
Intent intent = new Intent(getApplicationContext(), Leaderboard.class);
startActivity(intent); // IT START WITHOUT ASK ME THE PERMISSION
}
}
}
})
}
void askForFBPublishPerm(){
Log.d("perm", "asking for the permissions"); //I SEE THAT LOG BUT NOTHING MORE AFTER THAT LINE
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithPublishPermissions(this,Arrays.asList("publish_actions"));
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("perm", "SUCCESS");//I DONT SEE THAT LOG
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "cancelled while asking publish permission", Toast.LENGTH_LONG).show();
Log.d("perm", "cancelled while asking publish permission");
//I DONT SEE THAT LOG
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getApplicationContext(), "error occurred while asking publish permission!", Toast.LENGTH_LONG).show();
Log.d("perm", "error occurred while asking publish permission!"); //I DONT SEE THAT LOG
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
В мой журнал я вижу, что askForFBPublishPerm() вызывается, но он никогда не вводит onSuccess() или onCancel() или onError().
Я также просмотрел свое приложение через Facebook, и они дали мне разрешение «publish_action».
Этот запрос "publish_action" не работает, и я не знаю, почему, кто-то может мне помочь? Спасибо за консультацию
я добавил, но получил тот же результат .... нет «publish_action» разрешение не было предложено, просто переходите к следующему деятельности (Leaderboard), не спрашивая anithing – GMX
я скомпилированный код. Только этого не было, это часть onActivityResult. На какое-то время отключите функцию намерения, добавьте Toast в метод onSuccess в registerCallback и посмотрите, вызывается ли Toast. Кроме того, убедитесь, что вы не объявляете метод onActivityResult внутри метода onCreate. В этом случае вы получите ошибку в аннотации @Override выше onActivityResult. –
Я пробовал, когда я отменил новый вызов Activity, он запросит запрос на разрешение в порядке! Итак, теперь я копировал и вставлял новый вызов Intent в метод Onsuccess(). IT WORK, это правильный способ сделать это? потому что кажется так Спасибо btw! – GMX