Twitter分享如果没有安装应用程序

时间:2015-10-19 13:06:43

标签: android android-intent twitter share

我正在使用以下代码在twitter上分享视频。如果应用程序安装在设备中,它可以正常工作但如果应用程序不在那里则无法工作。即使应用程序未安装在设备上,我如何在Twitter上分享视频?

File f = new File(extras.getString("filepath"));
                Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setType("video/*");
                shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
                final PackageManager pm = mActivity.getApplicationContext().getPackageManager();
                final List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);

                for (final ResolveInfo app : activityList) {

                    if (("com.twitter.android.composer.ComposerActivity".equals(app.activityInfo.name)) || ("com.twitter.android.PostActivity".equals(app.activityInfo.name))) {

                        final ActivityInfo activity = app.activityInfo;
                        final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
                        shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
                        shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                        shareIntent.setComponent(name);
                        mActivity.getApplicationContext().startActivity(shareIntent);

                        break;
                    }
                }

2 个答案:

答案 0 :(得分:2)

您可以使用Twitter的Fabric SDK

实现会是这样的:

在您的settings.gradle中:

buildscript {
 repositories {
     jcenter()
      maven { url 'https://maven.fabric.io/public' }
 }
 dependencies {

     classpath 'io.fabric.tools:gradle:1.+'
 }
}

allprojects {
 repositories {
     jcenter()
    maven { url 'https://maven.fabric.io/public' }
 }
}

在build.gradle中添加以下依赖项:

compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
    transitive = true;
}
compile('com.twitter.sdk.android:tweet-composer:0.9.0@aar') {

    transitive = true;
}
compile('com.twitter.sdk.android:twitter:1.8.0@aar') {
    transitive = true;
}
compile 'org.apache.directory.studio:org.apache.commons.io:2.4'

然后在AndroidManifest.xml中添加以下内容:

<application>
... 
<meta-data
        android:name="io.fabric.ApiKey"
        android:value="YOUR FABIRC API KEY" />
</application>

最后在你的活动中使用它:

导入以下内容:

import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.TwitterCore;
import com.twitter.sdk.android.tweetcomposer.TweetComposer;
import io.fabric.sdk.android.Fabric;

在你的oncreate函数中执行:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fabric.with(this, new Crashlytics());

TwitterAuthConfig authConfig =  new  TwitterAuthConfig("consumerKey", "consumerSecret");
Fabric.with(this, new TwitterCore(authConfig), new TweetComposer());

然后发送:

TweetComposer.Builder builder = new TweetComposer.Builder(this).text(sendText);
File myFile = new File("path to your file");
Uri myUri = Uri.fromFile(myFile);
builder.image(myUri);
builder.show();

答案 1 :(得分:0)

要实现这一点,您必须使用Twitters api并发布到用户的帐户或使用他们提供的SDK,这里是指向Android Sdk https://dev.twitter.com/overview/api/twitter-libraries的链接 也可以使用Twitter 4j帮助您轻松使用api轻松编写代码。 http://twitter4j.org/en/