google-site-verification=jsXPozvTxtzpCjWQLDi-j-X9MSWTyc-H0zqACbpf6LM

Facebook Friends Mapper: Android

package com.example.friendsmapper; import android.Manifest; import android.content.pm.PackageManager; import android.location.Location; import android.os.Bundle; import android.widget. ; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.facebook. ; import com.facebook.login.LoginManager; import com.facebook.login.LoginResult; import com.google.android.gms.maps. ; import com.google.android.gms.maps.model. ; import com.google.android.gms.tasks.OnSuccessListener; import org.json.JSONArray; import org.json.JSONObject; import java.util.*;

<ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" />

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_GOOGLE_MAPS_API_KEY" /> facebook friends mapper android

@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == LOCATION_PERMISSION_REQUEST) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { googleMap.setMyLocationEnabled(true); } } } }

@Override public void onMapReady(@NonNull GoogleMap map) { googleMap = map; // Enable zoom controls googleMap.getUiSettings().setZoomControlsEnabled(true); // Request location permission if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { googleMap.setMyLocationEnabled(true); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST); } // Set map type googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); // Set info window click listener googleMap.setOnInfoWindowClickListener(marker -> { FriendLocation friend = friendMarkers.get(marker.getTitle()); if (friend != null) { showFriendDetailsDialog(friend); } }); } package com

private void filterFriendsByName() { String query = searchFilter.getText().toString().toLowerCase(); if (query.isEmpty()) { // Show all markers for (FriendLocation friend : allFriends) { addMarkerToMap(friend); } } else { // Clear all markers googleMap.clear(); friendMarkers.clear(); // Add only matching friends for (FriendLocation friend : allFriends) { if (friend.name.toLowerCase().contains(query)) { addMarkerToMap(friend); } } Toast.makeText(this, "Showing " + friendMarkers.size() + " matching friends", Toast.LENGTH_SHORT).show(); } }

<EditText android:id="@+id/searchFilter" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="Search friends..." android:padding="12dp" /> ; import com

private void fetchFriendsAndLocations() { progressBar.setVisibility(View.VISIBLE); statusText.setText("Loading friends..."); GraphRequest request = GraphRequest.newMeRequest( AccessToken.getCurrentAccessToken(), (object, response) -> { if (object != null) { try { JSONObject friends = object.getJSONObject("friends"); JSONArray data = friends.getJSONArray("data"); for (int i = 0; i < data.length(); i++) { JSONObject friend = data.getJSONObject(i); String name = friend.getString("name"); String id = friend.getString("id"); // Fetch friend's location info fetchFriendLocation(id, name); } statusText.setText("Found " + data.length() + " friends"); progressBar.setVisibility(View.GONE); } catch (Exception e) { e.printStackTrace(); statusText.setText("Error parsing friends data"); } } } ); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,friends.limit(100){id,name,location}"); request.setParameters(parameters); request.executeAsync(); }