7

ジンジャーブレッドでyoutubeapiStandAlonePlayerActivityを実行しようとすると、ActivityNotFoundExceptionエラーが発生します。ICSで正常に動作する場合

これが私の丸太猫です

01-23 15:34:28.071: E/AndroidRuntime(3378): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.android.youtube.api.StandalonePlayerActivity.START (has extras) }
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1515)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.app.Activity.startActivityForResult(Activity.java:2988)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:701)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.support.v4.app.Fragment.startActivity(Fragment.java:787)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at com.example.demo.TipsFragment$2.onClick(TipsFragment.java:143)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.view.View.performClick(View.java:2533)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.view.View$PerformClick.run(View.java:9320)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.os.Handler.handleCallback(Handler.java:587)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.os.Looper.loop(Looper.java:150)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at android.app.ActivityThread.main(ActivityThread.java:4389)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at java.lang.reflect.Method.invokeNative(Native Method)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at java.lang.reflect.Method.invoke(Method.java:507)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
01-23 15:34:28.071: E/AndroidRuntime(3378):     at dalvik.system.NativeStart.main(Native Method)

これが私がPlayerを起動するために使用したコードです

String vid=getYoutubeVideoId(vlink);
Intent intent=YouTubeStandalonePlayer.createVideoIntent(getActivity(),DEVELOPER_KEY, vid, 0,true,false);
startActivity(intent);

エラーが発生しますstartActivity

getYoutubeVideoID()コードは次のとおりです。

/*
     * Getting id of video from url
     */
    public static String getYoutubeVideoId(String youtubeUrl)
    {
        String video_id="";
        if (youtubeUrl != null && youtubeUrl.trim().length() > 0 && youtubeUrl.startsWith("http"))
        {

            String expression = "^.*((youtu.be"+ "\\/)" + "|(v\\/)|(\\/u\\/w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*"; // var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
            CharSequence input = youtubeUrl;
            Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(input);
            if (matcher.matches())
            {
                String groupIndex1 = matcher.group(7);
                if(groupIndex1!=null && groupIndex1.length()==11)
                    video_id = groupIndex1;
            }
        }
        return video_id;
    }
4

6 に答える 6

19

まず、デバイスでYouTubeサービスが利用可能かどうかを確認してから、そのアクティビティを開始してみてください。 YouTubeApiServiceUtil.isYouTubeApiServiceAvailable(mContext)。また、GooglePlayからYouTubeアプリをインストールしてみてください。

ドキュメントからの小さなメモ: Note: Users need to run version 4.2.16 of the mobile YouTube app (or higher) to use the API.

編集:これはあなたがそれを使用する方法です:

if(YouTubeApiServiceUtil.isYouTubeApiServiceAvailable(mContext).equals(YouTubeInitializationResult.SUCCESS)){
   //This means that your device has the Youtube API Service (the app) and you are safe to launch it. 

}else{
   // Log the outcome, take necessary measure, like playing the video in webview :)  
}

YouTubeInitializationResultここで列挙型を参照してくださいhttps://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubeInitializationResult

また、前述のクラスに関する哲学: https ://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubeApiServiceUtil

于 2013-01-23T10:50:03.970 に答える
1

デバイスには最新のYouTubeアプリがインストールされている必要があります。

于 2013-01-23T12:02:03.960 に答える
0

エミュレーターでアプリを実行していますか?youtubeプレーヤーはデフォルトでインストールされていないため、エミュレーターでは機能しない可能性があります。実際のデバイスで実行してみてください。

于 2013-01-23T10:14:13.767 に答える
0

Android用のYouTubeAPIを使用するには、3つのパラメーターが必要です

1)YouTubeデベロッパーキー

2)ビデオID

3)最新の公式YouTube Androidアプリ(バージョン4.2.16)

あなたのログ猫を見ると、この中の1つが欠けていると思います

参照

于 2013-01-23T10:28:28.583 に答える
0

あなたはあなたのデバイスにYouTubeAndroidアプリをインストールする必要があります、それは私のために働きました!

于 2014-05-15T16:38:25.477 に答える
0

@Nikolaの回答にいくつかの改善を提案します。ローカライズされたダイアログgetErrorDialog()を表示して、ユーザーが回復可能なエラーisUserRecoverableErrorを処理することができます。たとえば、[設定]でYouTubeアプリが無効になっている場合です。

val result = YouTubeApiServiceUtil.isYouTubeApiServiceAvailable(context)
when {
    result == YouTubeInitializationResult.SUCCESS -> startYouTubeActivity()
    result.isUserRecoverableError -> result.getErrorDialog(activity, 0).show()
    else -> toast("Something went wrong!")
}
于 2020-04-23T12:52:01.647 に答える