我正在使用以下代码在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;
}
}
答案 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/