到目前为止,我在stackoverflow帖子中搜索了,我可以直接将文本分享给twitter而不显示分享的弹出对话框。这意味着当我点击按钮时,它会直接重定向到Twitter应用程序并显示文本。
我唯一的问题是我必须直接与Twitter分享http图片。
下面我发布了我到目前为止所尝试的代码:
UsersAdapter.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应用。
答案 0 :(得分: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;
}
答案 1 :(得分:1)
你可以尝试这项工作吗
图片Uri:
File myImageFile = new File("/path/to/image");
Uri myImageUri = Uri.fromFile(myImageFile);
Intent Builder
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;
}
}
答案 2 :(得分:0)
这就是你需要的
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file);
答案 3 :(得分: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();
}
}