package com.sromku.simple.fb.example.fragments; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.sromku.simple.fb.Permission; import com.sromku.simple.fb.SimpleFacebook; import com.sromku.simple.fb.example.R; import com.sromku.simple.fb.listeners.OnNewPermissionsListener; import com.sromku.simple.fb.utils.Utils; import java.util.ArrayList; import java.util.List; import java.util.Set; public class RequestPermissionsFragment extends BaseFragment { private final static String EXAMPLE = "Request new permissions"; private TextView mResult; private Button mButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActivity().setTitle(EXAMPLE); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_example_action, container, false); mResult = (TextView) view.findViewById(R.id.result); view.findViewById(R.id.load_more).setVisibility(View.GONE); mButton = (Button) view.findViewById(R.id.button); mButton.setText(EXAMPLE); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showPermissionsSelectDialog(); } }); return view; } private void showPermissionsSelectDialog() { final List<Permission> newPermissions = new ArrayList<Permission>(); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Select new permissions").setMultiChoiceItems(getAllPermissions(), null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Permission permission = Permission.values()[which]; if (isChecked && !newPermissions.contains(permission)) { newPermissions.add(permission); } else if (!isChecked && newPermissions.contains(permission)) { newPermissions.remove(permission); } } }).setPositiveButton("Request", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { Permission[] permissionsArray = newPermissions.toArray(new Permission[newPermissions.size()]); SimpleFacebook.getInstance().requestNewPermissions(permissionsArray, new OnNewPermissionsListener() { @Override public void onFail(String reason) { mResult.setText(reason); } @Override public void onException(Throwable throwable) { mResult.setText(throwable.getMessage()); } @Override public void onCancel() { } @Override public void onSuccess(String accessToken, List<Permission> acceptedPermissions, List<Permission> declinedPermissions) { showGrantedPermissions(); if (declinedPermissions != null && declinedPermissions.size() > 0) { Toast.makeText(getActivity(), "User declined few permissions: " + declinedPermissions.toString(), Toast.LENGTH_SHORT).show(); } } }); } }); builder.create().show(); } private void showGrantedPermissions() { String res = "Granted permissions<br>"; Set<String> grantedPermissions = SimpleFacebook.getInstance().getGrantedPermissions(); res += Utils.join(grantedPermissions.iterator(), "<br>", new Utils.Process<String>() { @Override public String process(String permission) { return "\u25CF " + permission + " \u25CF"; } }); res += "<br>"; mResult.setText(Html.fromHtml(res)); } private CharSequence[] getAllPermissions() { Permission[] permissions = Permission.values(); CharSequence[] charSequences = new String[permissions.length]; for (int i = 0; i < permissions.length; i++) { charSequences[i] = permissions[i].getValue(); } return charSequences; } }