Perché YouTube Player API non funziona su Android 11?
Ho provato il progetto spiegato in questo video di YouTube su come riprodurre i video di YouTube sulle app Android:
https://www.youtube.com/watch?v=Up9BjrIuoXY
Ho provato a riprodurre video di YouTube con dispositivi che utilizzano Android 9 e Android 10 e i video vengono riprodotti correttamente, ma nei dispositivi Android 11 ho ricevuto questo messaggio all'interno della finestra video di YouTube:
"Si è verificato un errore durante l'inizializzazione del player di YouTube".
Questo è il codice di MainActivity.java:
package com.example.youtube;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
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 androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends YouTubeBaseActivity {
Button play_btn;
YouTubePlayerView youtubePlayerView;
YouTubePlayer.OnInitializedListener onInitializedListener;
private static final int RECOVERY_DIALOG_REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
youtubePlayerView = findViewById(R.id.youtubeView);
play_btn = findViewById(R.id.playvideo_btn);
final android.app.Activity myActivity = this;
onInitializedListener =new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.loadVideo("Up9BjrIuoXY");
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
if (youTubeInitializationResult.isUserRecoverableError()) {
youTubeInitializationResult.getErrorDialog(myActivity, RECOVERY_DIALOG_REQUEST).show();
} else {
String errorMessage = String.format(
getString(R.string.error_player), youTubeInitializationResult.toString());
Toast.makeText(myActivity, errorMessage, Toast.LENGTH_LONG).show();
}
}
};
play_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
youtubePlayerView.initialize("AIzaSyZ2", onInitializedListener);
}
});
}
}
L'app YouTube dei dispositivi Android 11 viene aggiornata.
Spero che qualcuno possa aiutarmi. Grazie!
Risposte
Con le limitazioni alla visibilità del pacchetto in Android 11, l'SDK non sarà in grado di trovare il servizio Youtube a meno che non si aggiunga un riferimento ad esso al manifest.
<queries>
<intent>
<action android:name="com.google.android.youtube.api.service.START" />
</intent>
</queries>
Bene. Finalmente abbiamo deciso di utilizzare UniWebView poiché il supporto iOS per questa libreria è praticamente zero. Il nostro progetto è mirato per iOS e Android e Google non aggiorna la sua API YouTube da secoli. Utilizza UIWebView che Apple rifiuta dal proprio negozio.