如何在android中同时将文本图像发布到twitter
您好,我在这里做了一个应用程序,我需要在Twitter上分享我的分数,我使用了下面的代码我的分数很好,但现在我需要与应用程序图标一起分享分数。但是我不知道如何与文本一起分享图像,有人能帮我吗,谢谢如何在android中同时将文本图像发布到twitter,android,android-intent,Android,Android Intent,您好,我在这里做了一个应用程序,我需要在Twitter上分享我的分数,我使用了下面的代码我的分数很好,但现在我需要与应用程序图标一起分享分数。但是我不知道如何与文本一起分享图像,有人能帮我吗,谢谢 TestPost.class: public class TestPost extends Activity { String review; private TwitterApp mTwitter; private String username = ""; private boolea
TestPost.class:
public class TestPost extends Activity {
String review;
private TwitterApp mTwitter;
private String username = "";
private boolean postToTwitter = false;
private static final String twitter_consumer_key = "";
private static final String twitter_secret_key = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.post);
Button postBtn = (Button) findViewById(R.id.button1);
final EditText reviewEdit = (EditText) findViewById(R.id.revieew);
postBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
review = reviewEdit.getText().toString();
postToTwitter = true;
onTwitterClick();
}
});
mTwitter = new TwitterApp(this, twitter_consumer_key,twitter_secret_key);
mTwitter.setListener(mTwLoginDialogListener);
if (mTwitter.hasAccessToken()) {
username = mTwitter.getUsername();
username = (username.equals("")) ? "No Name" : username;
}
}
private void postToTwitter(final String review) {
new Thread() {
@Override
public void run() {
int what = 0;
try {
mTwitter.updateStatus(review);
} catch (Exception e) {
what = 1;
}
mHandler.sendMessage(mHandler.obtainMessage(what));
}
}.start();
}
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
String text = (msg.what == 0) ? "Posted to Twitter" : "Post to Twitter failed";
Toast.makeText(TestPost.this, text, Toast.LENGTH_SHORT).show();
}
};
private final TwDialogListener mTwLoginDialogListener = new TwDialogListener() {
@Override
public void onComplete(String value) {
username = mTwitter.getUsername();
username = (username.equals("")) ? "No Name" : username;
postToTwitter = true;
postToTwitter(review);
Toast.makeText(TestPost.this, "Connected to Twitter as " + username, Toast.LENGTH_LONG).show();
}
@Override
public void onError(String value) {
Toast.makeText(TestPost.this, "Twitter connection failed", Toast.LENGTH_LONG).show();
}
};
private void onTwitterClick() {
if (mTwitter.hasAccessToken()) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Delete current Twitter connection?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mTwitter.resetAccessToken();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
final AlertDialog alert = builder.create();
alert.show();
} else {
mTwitter.authorize();
}
}
}
这就是我如何将图像和文本一起上传到登录的Twitter用户帐户的方式。我利用这一点。您必须登录并注册一个开发者帐户 该解决方案可以看作是两步解决方案 首先,当用户单击post按钮时,我首先抓取图像并上传到TwitPic。从那里,我获取TwitPic返回的URL(
stringURL=upload.upload(finalFile);
)
在这段代码的第二步中,在一个字符串实例(stringfinalstatuswithurl
)中,我获取一个EditText
的内容,然后将步骤1中的URL附加到它上面。完成后,该帖子最终发布到Twitter上
Configuration conf = new ConfigurationBuilder()
.setOAuthConsumerKey(TWITTER_CONSUMER_KEY)
.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET)
.setOAuthAccessToken(twit_access_token)
.setOAuthAccessTokenSecret(twit_access_token_secret)
.setMediaProviderAPIKey(TWIT_PIC_API)
.build();
// SET THE FILE PATH
File finalFile = new File(getRealPathFromURI(initialURI));
// THIS IS IMPORTANT. TWITPIC NEEDS THE ACTUAL PATH ON THE DEVICE. JUST THE URI DOES NOT WORK!!!!
ImageUpload upload = new ImageUploadFactory(conf).getInstance(MediaProvider.TWITPIC);
String url = upload.upload(finalFile);
Log.e("TWITTER URL RESPONSE", url);
// NOW, UPLOAD TO TWITTER
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(YOUR_TWITTER_CONSUMER_KEY);
builder.setOAuthConsumerSecret(YOUR_TWITTER_CONSUMER_SECRET);
AccessToken accessToken = new AccessToken(your_twit_access_token, your_twit_access_token_secret);
Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
String finalStatusWithURL = null;
if (finalStatusMessage.trim().length() > 0) {
finalStatusMessage = editStatusUpdate.getText().toString();
finalStatusWithURL = finalStatusMessage + ":\n " + url;
} else {
finalStatusWithURL = url;
}
twitter4j.Status response = twitter.updateStatus(finalStatusWithURL);
Log.e("TWITTER RESPONSE", response.getText());
这是一种获取要上载图像的真实路径的方法:
// HELPER METHOD TO GET REAL PATH FOR THE SELECTED IMAGE
public String getRealPathFromURI(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}
希望这有帮助。这是我的一个应用程序的生产代码
更新:
在代码中更改此选项:
File finalFile = new File(getRealPathFromURI(initialURI));
为此:
Uri tempUri = getImageUri(getApplicationContext(), icon);
File finalFile = new File(getRealPathFromURI(tempUri));
以及uritempuri=getImageUri(getApplicationContext(),bmpFinal)的助手方法代码>:
您仍然需要传递位图对象。要将应用程序图标转换为位图,请使用以下命令:
Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
更新2:
你问了我一个问题,我回答了你的问题后不久,Twitter在旧金山结束了一次开发者见面会。他们推出了一些新的卡片,我认为它们可能对您的特定用例有用。它是全新的,我还没来得及测试/使用它。但如果它符合您的目的,请查看以下链接:
(在那里我发现了新功能)
(官方推特博客)
(开发者页面,了解功能的详细信息和使用方法)
我想你不能在twitter上分享图片或图标,除非你把它作为一个单独的链接来分享OK,thnku。但是我必须同时分享这两个链接。将图片添加到flickr并将链接发布到twitter帖子。请检查:我检查了那个应用程序。在这里,我不想让图片出现异常,实际上我不想发布Gally图片,cam图像直接与分数我每次都必须与您共享应用程序主图标。但我不想直接从gallery或camera中选择任何图像,我需要添加一个图标。好的。请查看我的代码PostToWitter(“welocme”);像这样,我张贴欢迎旁边的文字,我必须张贴icon@radha:不幸的是,与Facebook不同,Twitter显示图像的方式不同。在我看来,你想要达到的目标是不可能的。如果我在游戏中得了10分。我会在twitter上分享这个分数“你得了10分”以及旁边的消息,我必须显示应用程序主图标image@radha:同样,Twitter不是这样工作的。很抱歉尝试使用默认的Twitter应用程序或任何Twitter应用程序,您将看到我在前面的评论中提到的行为。不是你想要的那样。
Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);