如何在android中同时将文本图像发布到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

您好,我在这里做了一个应用程序,我需要在Twitter上分享我的分数,我使用了下面的代码我的分数很好,但现在我需要与应用程序图标一起分享分数。但是我不知道如何与文本一起分享图像,有人能帮我吗,谢谢

    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);