11

我正在使用 Youtube API 在我的应用程序上安装简单的 playerView。我做了 API 所说的事情,但我不断收到“应用程序已停止”的消息。因为我使用的是韩国电话,所以我真的不知道确切的英语短语。希望这是正确的英语短语。

我将 Youtubeandroidplayerapi.jar 放在库中并构建路径并在库中包含不必要的组件。

这是Menu.java。

package com.hobak.sci;

import com.hobak.sci.DeveloperKey;
import com.hobak.sci.R;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;
import android.os.Bundle;

public class Menu extends YouTubeBaseActivity implements
    YouTubePlayer.OnInitializedListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
    youTubeView.initialize(DeveloperKey.DEVELOPER_KEY, this);
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
        YouTubePlayer player, boolean wasRestored) {
    if (!wasRestored) {
        player.cueVideo("2LHv1FPd1Ec");
    }
}

protected YouTubePlayer.Provider getYouTubePlayerProvider() {
    return (YouTubePlayerView) findViewById(R.id.youtube_view);
}

@Override
public void onInitializationFailure(Provider arg0,
        YouTubeInitializationResult arg1) {
    // TODO Auto-generated method stub

}

}

这是我的 xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFACD"
    android:orientation="vertical" >


  <com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/youtube_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />



</LinearLayout>

这是我的日志猫

03-17 15:55:51.260: E/AndroidRuntime(5277): FATAL EXCEPTION: main
03-17 15:55:51.260: E/AndroidRuntime(5277): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hobak.sci/com.hobak.sci.Menu}: java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.youtube.api.service.START }
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1961)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.access$600(ActivityThread.java:128)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1152)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.os.Looper.loop(Looper.java:137)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.main(ActivityThread.java:4453)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at java.lang.reflect.Method.invokeNative(Native Method)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at java.lang.reflect.Method.invoke(Method.java:511)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at dalvik.system.NativeStart.main(Native Method)
03-17 15:55:51.260: E/AndroidRuntime(5277): Caused by: java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.youtube.api.service.START }
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ContextImpl.bindService(ContextImpl.java:1164)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.content.ContextWrapper.bindService(ContextWrapper.java:370)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.internal.r.e(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.YouTubeBaseActivity$a.a(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.YouTubePlayerView.initialize(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.hobak.sci.Menu.onCreate(Menu.java:21)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.Activity.performCreate(Activity.java:4467)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1925)
03-17 15:55:51.260: E/AndroidRuntime(5277):     ... 11 more
4

10 回答 10

10

我遇到了这个问题。然后我刚刚添加

<uses-permission android:name="android.permission.INTERNET"/>进入标签中AndroidManifest.xml<manifest>之后该应用程序运行良好。

于 2013-05-15T09:35:31.993 回答
5

我通过执行以下步骤解决了这个问题:

  • 清理项目然后重建项目
  • 在具有高于 4.2.16 版本的 Youtube 应用程序的设备上运行该应用程序。
于 2014-09-12T11:05:03.373 回答
2

也许,这似乎是开发人员的关键问题。位于 DeveloperKey.java 中的示例 DEVELOPER_KEY 键将不起作用。首先,注册一个新的开发者密钥。( https://code.google.com/apis/console ) 然后,将其替换为有效密钥。

于 2014-02-12T02:30:38.773 回答
2

只需将您的 youtube 应用程序更新到手机中的最新版本,它就会完美运行

于 2016-05-31T18:35:47.223 回答
1

右键单击项目转到属性-> java内置路径->库->添加库并在那里添加你的jar文件,然后它就可以工作了

如果您想在您的应用程序中使用 youtube 视频,您的设备必须包含 youtube 应用程序,否则它将无法工作

于 2014-08-07T12:21:58.317 回答
0

除了添加<uses-permission android:name="android.permission.INTERNET" />到 AndroidManifest.xml 之外,您还必须在设备/模拟器上安装 youtube 应用程序。如果你想在模拟器上得到它,请侧载这个:

https://play.google.com/store/apps/details?id=com.google.android.youtube&hl=en (您可以通过http://apps.evozi.com/apk-downloader/?id
获取 apk =com.google.android.youtube )

于 2014-08-18T21:20:47.920 回答
0

如果 Google Glass 上的播放器失败

当 youtube 播放器失败时,传递给失败方法的 YouTubeInitializationResult arg1 参数包含有关播放器失败原因的信息。正如您在上面的代码中看到的那样,我只是简单地烤了它。我在 toast 中打印了 SERVIVE_MISSING。我在谷歌的开发者网站上找到了可能的返回值列表, SERVICE_MISSING 错误的原因是设备上缺少 YouTube API 服务。该服务是谷歌随 android 分发的标准 youtube 应用程序的一部分,但显然尚未将其添加到 glass 中。要解决此问题,您可以侧载应用程序以获取服务。遗憾的是,无法启动 YouTube 应用并从中观看视频,因为它是为 Android 手机编写的,并且没有语音触发/时间线卡。

它可以从这里下载,或者我在这里加载它:com.google.android.youtube-5.2.27.apk

只需将其侧载:

adb install com.google.android.youtube-5.2.27.apk

这会在玻璃上安装 youtube 应用程序。现在视频应该可以工作了!

取自:http ://www.eg.bucknell.edu/~jpk017/doku.php?id=wiki:yt

于 2015-06-29T14:16:43.487 回答
0

我遇到了同样的问题,经过大量搜索和谷歌搜索,我得到了答案:-

           for youtube player you must have youtube app enabled and still if not work then update youtube to the latest version.

那时它会起作用。

于 2017-06-23T05:12:23.790 回答
0

我在我的发布版本中遇到了这个问题,但在将它添加到 proguard 后工作了

-keepclassmembers class fqcn.of.javascript.interface.for.webview {
       public *;
   }
于 2017-05-15T21:06:39.493 回答
0

该问题也可能是由 Android 11 限制对其他应用程序的访问引起的。https://developer.android.com/training/basics/intents/package-visibility

将以下<queries>标签添加到<manifest>标签中AndroidManifest.xml以声明我的应用程序需要访问 Youtube 包并匹配适当的意图过滤器签名为我解决了这个问题:

<manifest package="com.example.game">
    <queries>
        <intent>
            <action
                android:name="com.google.android.youtube.api.service.START" />
        </intent>
    </queries>
    ...
</manifest>

阅读更多:https ://developer.android.com/training/package-visibility/declaring#intent-filter-signature

于 2022-02-13T13:20:21.640 回答