Android:Youtube和ACTION_SENDTO?

时间:2010-02-26 20:53:24

标签: android

我正在编写一个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();
            }
        }
    });

4 个答案:

答案 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操作,因此这可能是我们想要的意图。

然而,正如CommonsWare所说,这取决于拥有YouTube支持的手机,并且可以打破。这取自我的2.0.1系统映像。确保在开始之前检查意图是否有效。

答案 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。