首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >com.example.appname.MainActivity.onCreate(MainActivity.java:21)的Android错误

com.example.appname.MainActivity.onCreate(MainActivity.java:21)的Android错误
EN

Stack Overflow用户
提问于 2022-01-19 07:01:25
回答 1查看 1.4K关注 0票数 0

我试图创建一个应用程序作为一个YouTube播放器。它成功启动,但每当我试图打开我的应用程序。App正在停止仿真器。我想不出我的问题。感谢你的帮助。

MainAcivity.java

代码语言:javascript
复制
package com.example.youtubeplayer;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import androidx.annotation.Nullable;
import android.widget.Toast;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;

public class MainActivity extends AppCompatActivity {

String api_key = "AIzaSyDoCqWQdWVzhVX1BgHFzV1Ara3iH-vMpZk";

@Override
protected void
onCreate(@Nullable Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Get reference to the view of Video player
    YouTubePlayerView ytPlayer = findViewById(R.id.ytPlayer);

    ytPlayer.initialize(
            api_key,
            new YouTubePlayer.OnInitializedListener() {
                // Implement two methods by clicking on red
                // error bulb inside onInitializationSuccess
                // method add the video link or the playlist
                // link that you want to play In here we
                // also handle the play and pause
                // functionality
                @Override
                public void onInitializationSuccess(
                        YouTubePlayer.Provider provider,
                        YouTubePlayer youTubePlayer, boolean b)
                {
                    youTubePlayer.loadVideo("gEPIyWlAwIw");
                    youTubePlayer.play();
                }

                // Inside onInitializationFailure
                // implement the failure functionality
                // Here we will show toast
                @Override
                public void onInitializationFailure(YouTubePlayer.Provider provider,
                                                    YouTubeInitializationResult
                                                            youTubeInitializationResult)
                {
                    Toast.makeText(getApplicationContext(), "Video player Failed", Toast.LENGTH_SHORT).show();
                }
            });
   }
}

AndroidManifest.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.YouTubePlayer">
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

activity_main.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.youtube.player.YouTubePlayerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ytPlayer"
        app:layout_constraintTop_toTopOf="parent"/>

</RelativeLayout>

Logcat

代码语言:javascript
复制
2022-01-19 12:11:16.396 8958-8958/? I/e.youtubeplaye: Not late-enabling -Xcheck:jni (already on)
2022-01-19 12:11:16.409 8958-8958/? E/e.youtubeplaye: Unknown bits set in runtime_flags: 0x8000
2022-01-19 12:11:16.409 8958-8958/? W/e.youtubeplaye: Unexpected CPU variant for X86 using defaults: x86
2022-01-19 12:11:16.656 8958-8991/com.example.youtubeplayer D/libEGL: Emulator has host GPU support, qemu.gles is set to 1.
2022-01-19 12:11:16.656 8958-8991/com.example.youtubeplayer W/libc: Unable to set property "qemu.gles" to "1": connection failed; errno=13 (Permission denied)
2022-01-19 12:11:16.650 8958-8958/com.example.youtubeplayer W/RenderThread: type=1400 audit(0.0:46): avc: denied { write } for name="property_service" dev="tmpfs" ino=267 scontext=u:r:untrusted_app:s0:c133,c256,c512,c768 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0 app=com.example.youtubeplayer
2022-01-19 12:11:16.669 8958-8991/com.example.youtubeplayer D/libEGL: loaded /vendor/lib/egl/libEGL_emulation.so
2022-01-19 12:11:16.672 8958-8991/com.example.youtubeplayer D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
2022-01-19 12:11:16.675 8958-8991/com.example.youtubeplayer D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
2022-01-19 12:11:16.834 8958-8958/com.example.youtubeplayer W/e.youtubeplaye: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2022-01-19 12:11:16.835 8958-8958/com.example.youtubeplayer W/e.youtubeplaye: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2022-01-19 12:11:16.853 8958-8958/com.example.youtubeplayer D/AndroidRuntime: Shutting down VM
2022-01-19 12:11:16.854 8958-8958/com.example.youtubeplayer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.youtubeplayer, PID: 8958
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.youtubeplayer/com.example.youtubeplayer.MainActivity}: android.view.InflateException: Binary XML file line #13 in com.example.youtubeplayer:layout/activity_main: Binary XML file line #13 in com.example.youtubeplayer:layout/activity_main: Error inflating class com.google.android.youtube.player.YouTubePlayerView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.view.InflateException: Binary XML file line #13 in com.example.youtubeplayer:layout/activity_main: Binary XML file line #13 in com.example.youtubeplayer:layout/activity_main: Error inflating class com.google.android.youtube.player.YouTubePlayerView
     Caused by: android.view.InflateException: Binary XML file line #13 in com.example.youtubeplayer:layout/activity_main: Error inflating class com.google.android.youtube.player.YouTubePlayerView
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:854)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:706)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:195)
        at com.example.youtubeplayer.MainActivity.onCreate(MainActivity.java:21)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.IllegalStateException: A YouTubePlayerView can only be created with an Activity  which extends YouTubeBaseActivity as its context.
2022-01-19 12:11:16.854 8958-8958/com.example.youtubeplayer E/AndroidRuntime:     at com.google.android.youtube.player.YouTubePlayerView.<init>(Unknown Source:19)
        at com.google.android.youtube.player.YouTubePlayerView.<init>(Unknown Source:1)
            ... 28 more
EN

回答 1

Stack Overflow用户

发布于 2022-01-19 07:28:50

您的堆栈跟踪中有明确的提示(第4行从发布行的底部)

YouTubePlayerView只能通过扩展YouTubeBaseActivity作为上下文的活动来创建。

所以换这条线

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

到这个

代码语言:javascript
复制
public class MainActivity extends YouTubeBaseActivity {
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70766461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档