Facebookのアルバムに写真をアップロードするアプリを開発中です。アプリは問題なく写真をアップロードします。ハードコーディングすれば、写真にキャプションを付けることもできます。私がやろうとしているのは、ユーザーのキャプションをキャプチャし、画像をアップロードする前にそれをバンドルに配置するアラート ダイアログを作成することです。起こっていることは、写真がアップロードされた後、ダイアログボックスにキャプションを入力することです。
アラートダイアログをポップする方法は次のとおりです...
public String createAlert() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Enter Caption for Photo");
alert.setMessage("Caption :");
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
imageCaption = input.getText().toString();
return;
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
return;
}
});
AlertDialog helpDialog = alert.create();
helpDialog.show();
return imageCaption;
}
今ここにバンドルとFacebookへのアップロードがあります...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case PICK_EXISTING_PHOTO_RESULT_CODE: {
if (resultCode == RESULT_OK){
Uri photoUri = data.getData();
String imagePath = getPath(photoUri);
byte[] data1 = null;
Bitmap bi = BitmapFactory.decodeFile(imagePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data1 = baos.toByteArray();
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, facebook.getAccessToken());
params.putString("caption", createAlert() );
params.putByteArray("photo", data1);
try {
facebook.request("me/photos",params,"POST");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;
}
default: {
facebook.authorizeCallback(requestCode, resultCode, data);
break;
}
}
}