我有一个Android应用程序,可以播放youtube视频。我使用的是最新的YouTube API(1.2.1)。我在Android 4.0.4,4.3,4.4.4或5.0中的几个设备上尝试它并且它完美(在每个设备上都是YouTube应用程序版本10.-。但是在一台设备上,android 4.0.4和YouTube在哪里应用程序版本4.4.11它不起作用并收到错误“初始化YouTube播放器时出错”。在文档中写道,YouTube应用程序所需的最低版本是4.2.16。所以我不知道,在哪里问题。
有人有想法,有什么问题或我该如何解决?
非常感谢...
答案 0 :(得分:8)
此问题在 Android 11 及更高版本中出现,这是由于包可见性过滤
有限的应用程序可见性会影响提供有关其他应用程序信息的方法的返回结果,例如 queryIntentActivities()、getPackageInfo() 和 getInstalledApplications()。可见性有限还会影响与其他应用的显式交互,例如启动其他应用的服务。
更多信息:https://developer.android.com/training/package-visibility
将以下代码行添加到您的 AndroidManifest.xml 文件中
<queries>
<intent>
<action android:name="com.google.android.youtube.api.service.START" />
</intent>
</queries>
答案 1 :(得分:4)
将您的Android youtube应用更新到最新版本,它将适用于Sure !!
答案 2 :(得分:0)
请试试这个。首先,您应该尝试从以下链接下载适用于Android的Youtube播放器库:
您应该首先安装它:Project - &gt;菜单:文件&gt; <结构> “依赖关系选项卡”&gt;添加 - &gt;库依赖
如果不起作用,请尝试以下两种方法之一:
在库的build.gradle文件中添加库内部依赖关系,并在外部库中粘贴你的库。
OR
只需转到app文件夹中的libs文件夹并粘贴你所有的.jar例如库文件现在这里的技巧就是现在进入settings.gradle文件现在添加这行包括':app:libs'在include'之后:应用'它肯定会有用。
然后,您应该有这样的布局:
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
你可以有这样的玩家活动:
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
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.YouTubePlayerView;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.youtube.YouTube;
import java.io.IOException;
public class YoutubeActivity extends YouTubeBaseActivity{
private YouTubePlayerView playerView;
private YouTube youtube;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_youtube);
youtube = new YouTube.Builder(new NetHttpTransport(),
new JacksonFactory(), new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest hr) throws IOException {}
}).setApplicationName(this.getString(R.string.app_name)).build();
playerView = (YouTubePlayerView)findViewById(R.id.player_view);
playerView.initialize("Your API Key", new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
if(!b){
String videoId = getIntent().getExtras().getString("videoID");
youTubePlayer.cueVideo(videoId);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Toast.makeText(getApplicationContext(), getString(R.string.failed), Toast.LENGTH_LONG).show();
}
});
}
}
答案 3 :(得分:0)
我从没想过要在那个位置查找设置。就像您说的那样有效。
以下是有关这些设置知识较少的说明。
首先,您需要进入设置-> 电池-> 应用启动-> YouTube。 < / p>
现在,使该选项自动管理。
禁用上述选项后,将显示一个弹出窗口。
现在,启用选项二次启动(可以由其他应用启动)
答案 4 :(得分:0)
我将 targetSdkVersion =30 替换为 targetSdkVersion =26 并且它对我有用
apply plugin: 'com.android.application'
android {
compileSdkVersion 30`enter code here`
defaultConfig {
applicationId "com.loopwiki.youtubeplayerexample"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation files('libs/YouTubeAndroidPlayerApi.jar')
}