2016-06-30 3 views
1

私はAndroid TVアプリで動画のリストを持っています。動画を再生しようとすると、YouTubeプレーヤーがポップアップして再生すると考えられます。ただし、ビデオを再生しようとする直前にプレーヤーがクラッシュします。アプリ内でビデオを再生しようとすると、Android TVのYouTubeプレーヤーがクラッシュするのはなぜですか?

クラッシュが急激に発生するため、アプリがメインの動画ページにクラッシュする前に、プレーヤーが表示されることはありません。

誰かが私にこれについていくつかの洞察を与えることができますか?

public class MainActivity extends Activity 
{ 
    private static final String VIDEO_ID = "fhWaJi1Hsfo"; 
    private static final String TAG = "MyActivity"; 

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

     Intent intentStartYoutube = 
       YouTubeIntents.createPlayVideoIntent(getApplicationContext(), VIDEO_ID); 
     startActivity(intentStartYoutube); 
    } 

    .... 
} 

はFYI、マニフェストファイルが既に権限<uses-permission android:name="android.permission.INTERNET" />が含まれています

はここでかなり多く、私が持っている唯一の単純なコードです。

UPDATE Logcat:

FATAL EXCEPTION: main 
Process: com.example.vietmytv_androidtv, PID: 20663 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vietmytv_androidtv/com.example.vietmytv_androidtv.ui.MainActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=https://www.youtube.com/watch?v=fhWaJi1Hsfo pkg=com.google.android.youtube (has extras) } 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5257) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=https://www.youtube.com/watch?v=fhWaJi1Hsfo pkg=com.google.android.youtube (has extras) } 
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1781) 
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1501) 
    at android.app.Activity.startActivityForResult(Activity.java:3745) 
    at android.app.Activity.startActivityForResult(Activity.java:3706) 
    at android.app.Activity.startActivity(Activity.java:4016) 
    at android.app.Activity.startActivity(Activity.java:3984) 
    at com.ui.MainActivity.onCreate(MainActivity.java:54) 
    at android.app.Activity.performCreate(Activity.java:5990) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
    at android.app.ActivityThread.access$800(ActivityThread.java:151)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:135)  
    at android.app.ActivityThread.main(ActivityThread.java:5257)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:372 

私はこのチュートリアル以下ました:携帯電話でhttp://android-coding.blogspot.com/2013/04/create-intent-to-specified-video-or.html

+0

クラッシュログはありますか? –

+0

@Vlad、これはシミュレータでテストできないので、クラッシュログはありません – Pangu

+0

そしてなぜそれができないのですか? –

答えて

3

のYouTubeは、Android TVでYouTubeのと同じではありません。そのため、おそらく存在しないアプリを開こうとしているのです。クラッシュログを投稿できますか?

回避策として、YouTube URLにリンクする目的を使用して、YT for ATVアプリとやり取りすることができます。あなたがそれを始めると、YouTubeはそのリンクを見て、そのビデオにアプリを開きます。

public void OpenYT() { 
    Intent youtube = new Intent(); 
    youtube.setAction(Intent.ACTION_VIEW); 
    youtube.setData(Uri.parse("http://youtube.com/watch?v=dQw4w9WgXcQ")); 
    getActivity().startActivity(youtube); 
} 
+0

それは動作しますが、なぜ私が使用するコードはクラッシュしますか?私は自分のアプリでATV YouTubeを通して再生するのではなく、YouTubeのビデオを再生したいのですが、これは可能ですか?....私はlogcatを更新しました。 – Pangu

+0

あなたのアプリはYouTubeアプリにアクセスしようとしていますが、存在しません。 Android TVには別のパッケージ名の「Android TV用YouTube」アプリがあります。 埋め込みWebViewとYouTubeのiframe APIを使用すると、アプリ内で動画を再生できます。 –

+0

@Pangu check [この回答](https://stackoverflow.com/a/41744544/2614364) –

関連する問題