6

到目前为止,我在 stackoverflow 帖子中进行了搜索,我可以直接将文本分享到 twitter,而无需显示用于分享的弹出对话框。这意味着当我单击按钮时,它会直接重定向到 twitter 应用程序并显示文本。

我唯一的问题是我必须直接将 http 图像分享到 Twitter。

下面我发布了到目前为止我尝试过的代码:

用户适配器.java:

// Create intent using ACTION_VIEW and a normal Twitter url:
        String tweetUrl = String.format("https://twitter.com/intent/tweet?text=%s&url=%s",
                urlEncode(strShareText), 
                urlEncode(strShareImageUrl));
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(tweetUrl));

        // Narrow down to official Twitter app, if available:
        List<ResolveInfo> matches = context.getPackageManager().queryIntentActivities(intent, 0);
        for (ResolveInfo info : matches) {
            if (info.activityInfo.packageName.toLowerCase().startsWith("com.twitter")) {
                intent.setPackage(info.activityInfo.packageName);
            }
        }

        context.startActivity(intent);

在上面的代码中,文本在 twitter 中正确显示。但图像显示在 http url 中。

任何人都知道如何在不显示链接的情况下直接将图像分享到 Twitter 应用程序。

4

4 回答 4

5

您可以使用TwitterComposer对话框。

这是示例代码。

TweetComposer.Builder builder = new TweetComposer.Builder(mActivity)
                .text("hello text");
                .image(Uri.parse("https://media-mediatemple.netdna-ssl.com/wp-content/uploads/2016/01/07-responsive-image-example-castle-7-opt.jpg"));
builder.show();

在 gradle 文件中添加依赖项

compile('com.twitter.sdk.android:twitter:1.8.0@aar') {
        transitive = true;
}
于 2016-06-25T08:19:51.320 回答
1

你可以试试这个它对我的工作

图像 Uri :

File myImageFile = new File("/path/to/image");
Uri myImageUri = Uri.fromFile(myImageFile);

意图构建器

TweetComposer.Builder builder = new TweetComposer.Builder(this)
   .text("just setting up my Fabric.")
   .image(myImageUri);
builder.show();

将此添加到您的 build.gradle 依赖项中:

dependencies {
 compile('com.twitter.sdk.android:tweet-composer:1.0.5@aar') {
    transitive = true;
 }
}
于 2016-08-08T08:38:18.527 回答
0

致电:

new PostPicture(MyActivity.this).execute("IMAGE_URL");

发布图片:

private class PostPicture extends AsyncTask<String, Void, File> {
    private final Context context;

    public PostPicture(Context context) {
        this.context = context;
    }

    @Override
    protected File doInBackground(String... params) {

        FutureTarget<File> future = Glide.with(getApplicationContext())
                .load(params[0])
                .downloadOnly(600, 600);

        File file = null;
        try {
            file = future.get();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return file;
    }

    @Override
    protected void onPostExecute(File result) {
        if (result == null) {
            return ;
        }

        Uri uri = FileProvider.getUriForFile(getApplicationContext(), 
         getApplicationContext().getPackageName(), result);
        postIt(uri);
    }

    private void postIt(Uri result) {
        TweetComposer.Builder builder = new TweetComposer.Builder(this)
                .text("Post Image from URl.")
                .image(result);
        builder.show();
    }
}
于 2016-08-09T12:06:01.387 回答
0

这就是你需要的

intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file);
于 2016-08-08T06:13:27.550 回答