package eoc.studio.voicecard.facebook; import java.io.ByteArrayOutputStream; import java.io.File; import java.util.ArrayList; import org.json.JSONObject; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.facebook.FacebookException; import com.facebook.Response; import com.facebook.Session; import com.facebook.model.GraphUser; import eoc.studio.voicecard.BaseActivity; import eoc.studio.voicecard.R; import eoc.studio.voicecard.card.Card; import eoc.studio.voicecard.facebook.enetities.FriendInfo; import eoc.studio.voicecard.facebook.enetities.Photo; import eoc.studio.voicecard.facebook.enetities.Publish; import eoc.studio.voicecard.facebook.enetities.UserInfo; import eoc.studio.voicecard.facebook.friends.SelectFriendActivity; public class TestFacebookActivity extends BaseActivity { private static final String TAG = "TestFacebookActivity"; private FacebookManager facebookManager; private String johnId = "100007720118618"; private String[] testIdList = { "100007811983123", "100007720118618" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_facebook); facebookManager = FacebookManager.getInstance(TestFacebookActivity.this); findViews(); getDeviceDesity(); } @Override public void onStart() { super.onStart(); } @Override public void onStop() { super.onStop(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Session.saveSession(Session.getActiveSession(), outState); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); switch (requestCode) { case FriendInfo.GET_FRIEND_REQUEST_CODE: Log.d(TAG, "GET_FRIEND_REQUEST_CODE"); if (data != null) { Bundle bundle = data.getExtras(); if (bundle != null) { ArrayList<FriendInfo> friendList = bundle .getParcelableArrayList(FriendInfo.GET_FRIEND); if (friendList != null) { for (int i = 0; i < friendList.size(); i++) { Log.d(TAG, "ID is " + friendList.get(i).getFriendId()); Log.d(TAG, "Name is " + friendList.get(i).getFriendName()); Log.d(TAG, "Birthday is " + friendList.get(i).getFriendBirthday()); Log.d(TAG, "ImgLink is " + friendList.get(i).getFriendImgLink()); } } } } break; } } private void findViews() { Button getUserProfile = (Button) findViewById(R.id.getUserProfile); Button getFriendList = (Button) findViewById(R.id.getFriendList); Button inviteFriend = (Button) findViewById(R.id.inviteFriend); Button publishMe = (Button) findViewById(R.id.publishMe); Button publishFriend = (Button) findViewById(R.id.publishFriend); Button logout = (Button) findViewById(R.id.logout); Button upload = (Button) findViewById(R.id.upload); Button publishUserNoDialog = (Button) findViewById(R.id.publishUserFeed); Button publishNews = (Button) findViewById(R.id.publishNews); getUserProfile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { facebookManager.getUserProfile(TestFacebookActivity.this, facebookManager.new RequestGraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { JSONObject userJSON = user.getInnerJSONObject(); if(userJSON != null) { UserInfo userInfo = new UserInfo(userJSON); Log.d(TAG, "userInfo id is " + userInfo.getId()); } } else { Log.d(TAG, "userInfo id is null "); } } }); } } }); getFriendList.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(TestFacebookActivity.this, SelectFriendActivity.class); startActivityForResult(intent, FriendInfo.GET_FRIEND_REQUEST_CODE); } }); inviteFriend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { File imgfile = new File("/storage/sdcard1/Download/jordan.jpg"); Uri imgUri = Uri.fromFile(imgfile); File signfile = new File("/storage/sdcard1/Download/jordan.jpg"); Uri signUri = Uri.fromFile(signfile); Card card = new Card(1, null, "Voice Card", null, null, null, null, null, 8022614); card.setImage(imgUri); card.setSound(imgUri); card.setMessage("Voice Card invite", 0, 0); card.setSignDraftImage(signUri); card.setName("Test"); facebookManager.inviteFriend(TestFacebookActivity.this, null, card, facebookManager.new InviteListener() { @Override public void onComplete(Bundle values, FacebookException error) { if (error != null) { Log.d(TAG, "Invite had error is " + error.getMessage()); } else { Log.d(TAG, "Invite no error "); Log.d(TAG, "values " + values) ; facebookManager.sendCardtoServer(facebookManager.fetchInvitedFriends(values)); } } }); } } }); publishMe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { facebookManager.publishTimeline(TestFacebookActivity.this, new Publish(johnId, getResources().getString(R.string.share_app_name), null, getResources().getString(R.string.share_caption), getResources().getString(R.string.share_description), getResources().getString(R.string.share_link))); } } }); publishFriend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { // only publish john for test // facebookManager.publishTimeline(TestFacebookActivity.this, new Publish(johnId, // getResources().getString(R.string.share_app_name), Publish.DEFAULT_PICTURE, getResources().getString(R.string.share_caption), // getResources().getString(R.string.share_caption), getResources().getString( // R.string.share_link))); facebookManager.publishTimeline(TestFacebookActivity.this, johnId, facebookManager.new PublishListener() { @Override public void onComplete(Bundle values, FacebookException error) { if (error != null) { Toast.makeText(TestFacebookActivity.this, getResources().getString(R.string.news_send_fail), Toast.LENGTH_LONG).show(); } else { Toast.makeText(TestFacebookActivity.this, getResources().getString(R.string.news_send_ok), Toast.LENGTH_LONG).show(); } } }); } } }); logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { facebookManager.logout(); TestFacebookActivity.this.finish(); } } }); upload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { facebookManager.upload(new Photo(getResources().getString(R.string.share_app_name), getPhoto())); } } }); publishUserNoDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { facebookManager.publishUserFeed(TestFacebookActivity.this, new Publish(johnId, getResources().getString( R.string.share_app_name), null, getResources().getString( R.string.share_caption), getResources().getString( R.string.share_description), getResources().getString( R.string.share_link))); } } }); publishNews.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (facebookManager != null) { File file = new File("/storage/sdcard1/Download/jordan.jpg"); Uri fileUri = Uri.fromFile(file); Log.d(TAG, "fileUri is " + fileUri); facebookManager.publishNews(TestFacebookActivity.this, "100007811983123", fileUri, facebookManager.new PublishListener() { @Override public void onComplete(Bundle values, FacebookException error) { if (error != null) { Log.d(TAG, "TestFacebookActivity Publish had error is " + error.getMessage()); // if (error.getMessage() == null) { // if (TestFacebookActivity.this != null) { // showToast(getResources().getString(R.string.cancel_publish), // false); // } // } else { // showToast(error.getMessage(), false); // } } else { Log.d(TAG, "TestFacebookActivity Publish no error "); } } }); } } }); } private void getDeviceDesity() { DisplayMetrics metrics = getResources().getDisplayMetrics(); Log.d(TAG, "desity is " + metrics.density); Log.d(TAG, "densityDpi is " + metrics.densityDpi); } private byte[] getPhoto() { Drawable drawable = getResources().getDrawable(R.drawable.dog); Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); return stream.toByteArray(); } }