Q: Add to another user array Parse Android In Parse I have another column in the User table known as 'Friends' which is an array. From my current user I am trying to add to another user's friends array.
I have tried:
//buddy = a string of the other person's username
//to add to CURRENT user's array (this is working)
UserList.user.addUnique("Friends", buddy);
UserList.user.saveEventually();

    //this is to add to another user's array (NOT WORKING)
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("username", buddy);
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(List<ParseUser> objects, ParseException e) {
            if (e == null) {
                // The query was successful.
                for (ParseObject friend : objects) {
                    friend.addUnique("Friends",UserList.user.getUsername());
                    friend.saveEventually();
                }
            } else {
                // Something went wrong.
                Log.d("Username", "Error: " + e.getMessage());
            }
        }
    });


A: Write a method in a java that passes data to the cloud, and calls the function on the cloud by its name:
// the passes to the cloud is stored on HashMap
HashMap<String, Object> params = new HashMap<String, Object>();
// user's name to add the buddy to it
params.put("username", username);    
// buddy's name to pass to the cloud    
params.put("buddy", buddy);
ParseCloud.callFunctionInBackground("addBuddyToFriendsList", params, new FunctionCallback<String>(){
    public void done(String result, ParseException e){
    // e==null means no errors in running the function
       if(e==null){
          System.out.println(result);
       }else{
          System.out.println(e.getMessage());
       }
    }
});

Ok, and now let's write the function to be used in the cloud (assuming you know how to deploy functions on the cloud):
[EDITED]
Parse.Cloud.define("addBuddyToFriendsList", function (request, response){
Parse.Cloud.useMasterKey();
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.username);    
query.find({
    success: function(user) {
        // query.find returns an array.....            
        user[0].addUnique("Friends", request.params.buddy);
        user[0].save(null, {
           success: function(success){
              response.success();
           }, 
           error: function (error){
               response.error(error);
           }
        });
        }, 
        error: function(object, error) {}
    });
});


A: Try this:
ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
query.whereEqualTo("username", buddy);
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> objects, ParseException e) {
        if (e == null) {
            // The query was successful.
            for (ParseObject friend : objects) {
                friend.addUnique("Friends",UserList.user.getUsername());
                friend.saveEventually();
            }
        } else {
            // Something went wrong.
            Log.d("Username", "Error: " + e.getMessage());
        }
    }
});

I tried to call that class in different way then you did, I referred to it like a normal class. Usually this way works for me.
The thing is with "ParseUser" type is limited, for security reasons.
