我正在编写一个Android应用,用户可以将视频上传到Youtube。我希望Youtube标记字段预先填充我设置的标记。
我也希望用户界面能像这样工作:用户点击上传按钮,用户直接进入Youtube上传意图(而不是从选配器中挑选),标签字段已预先填充。
这可以使用ACTION_SENDTO吗?
目前我有这个代码,只是启动了一个Chooser,这真的不是我想要的:
btnUpload.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//uploadToYouTube();
//videoUpload();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("video/3gpp");
intent.putExtra(Intent.EXTRA_STREAM, videoURI);
try {
startActivity(Intent.createChooser(intent,
"Upload video via:"));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(Recorder.this, "No way to share!",
Toast.LENGTH_SHORT).show();
}
}
});
答案 0 :(得分:2)
它启动了一个选择器,因为你用Intent.createChooser
告诉它。您需要直接指定YouTube的活动。
经过调查,看起来MediaUploader
处理了YouTube上传问题。我调查了它的AndroidManifest.xml,我猜你要解雇的意图是:
com.google.android.apps.uploader.UploaderApplication.youtube.YouTubeSettingsActivity
以下是AndroidManifest.xml的有趣部分。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser"
android:versionName="1.4.13"
package="com.google.android.apps.uploader">
<uses-sdk android:minSdkVersion="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser" />
<application
android:label="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser"
android:name=".UploaderApplication"
android:debuggable="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser">
<activity
android:theme="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser"
android:name=".youtube.YouTubeSettingsActivity"
android:excludeFromRecents="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser"
android:configChanges="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser">
<intent-filter
android:label="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser"
android:icon="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser">
<data android:mimeType="video/*" />
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
您会注意到intent-filter
的{{1}}正在接收YouTubeSettingsActivity
操作,因此这可能是我们想要的意图。
答案 1 :(得分:2)
原来最好的方法是通过普通的POST请求上传到我自己的网站,然后从服务器端上传到YouTube。
答案 2 :(得分:1)
所以,实际上这是未记录的代码...... 非常感谢Andrew Koester的线索!
Intent intent = new Intent(Intent.ACTION_SEND,uri); intent.setType("video/3gpp"); intent.setComponent(new ComponentName( "com.google.android.apps.uploader", "com.google.android.apps.uploader.youtube.YouTubeSettingsActivity") ); intent.setFlags(0x3000000); // ParcelFileDescriptor.MODE_READ_WRITE ?!? intent.putExtra(Intent.EXTRA_STREAM,uri); try { startActivity(intent); // // startActivityForResult(intent,23); //only returns OK... how to get URL?! } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(getApplicationContext(),"No way to share",Toast.LENGTH_SHORT).show(); }
答案 3 :(得分:0)
就个人而言,我认为当前的实施是正确的答案 - 只是因为你希望YouTube并不意味着用户想要YouTube。