2017-11-06 10 views
0

Youtubeアプリで共有用にのみインテントフィルタを登録したいと考えています。AndroidでYoutubeに使用するインテントフィルタの設定方法

これまでのところ、私はYoutubeからインテントを正常に受け取ることができました。問題は、私の意図ファイラーが十分ではないということです。私のアプリは他のアプリの他の共有機能(Youtubeだけでなく)で利用できるように表示されます。

これは私が今使っているものです:

<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 

私は問題が答えのようなタイプで不正確があるある(ほとんどがthis one似ています)いくつかの質問を検討している:

<data android:host="www.youtube.com" ... /> 

data documentationによれば、schemeは、hostが有効であるために最も多く提供されます。したがって、ホストを追加するだけの回答では、schemeが存在しないため、intent-filterはYoutube固有のものではないため、hostは無視されます。

だから私は活動が開始されたときintentの利用可能な方法を使って、これを理解しようとしている:意図で利用可能な情報がチェックされているときに

Intent intent = getIntent(); 

    Bundle bundle = intent.getExtras(); 
    for (String key : bundle.keySet()) { 
     Log.d("KEY", key); 
    } 

    //The above loop will log 
    //... D/KEY: android.intent.extra.SUBJECT 
    //... D/KEY: android.intent.extra.TEXT 

    //This is are the same keys than above, but using the available constants 
    String subject = getIntent().getStringExtra(Intent.EXTRA_SUBJECT); 
    String text = getIntent().getStringExtra(Intent.EXTRA_TEXT); 

    //The subject is the video title 
    Log.d("SUBJECT", subject); 

    //The text is the video url, example: https://youtu.be/p6qX_lg4wTc 
    Log.d("TEXT", text); 

    //Action is consistent with the intent-filter android.intent.action.SEND 
    Log.d("ACTION", intent.getAction()); 

    //This is consistent with the intent-filter data mime type text/plain 
    Log.d("TYPE", intent.getType()); 

    /* 
     This is the problem. 
     The scheme is null (that is why I'm using String value of). 
    */ 
    Log.d("scheme", String.valueOf(intent.getScheme())); 

、すべてがあると思われます順番にはですが、スキームはありません。それはアプリがもはやチューで提供されて行うものではありません、httpまたはhttpsが動作しません追加

<data android:scheme="http" android:mimeType="text/plain"/> 

//I'm adding youtu.be here because is the url format in the text extra 
<data android:scheme="http" android:host="youtu.be" android:mimeType="text/plain"/> 

:だから、得ているものに基づいて、私はそれを把握するためにいくつかブラインド試みを行っています。つまり、hostを追加してもう一方の試みを実行することはできません。

Doeの誰もがYoutubeシェア専用にintent-filterを作成する方法を知っていますか?

PS:私は、私はそれがYouTubeのURLと一致するかどうかを確認するために、URLを確認でき知っているが、ユーザーフレンドリーにいないようですSENDに一致するすべてのチューに私のアプリを持っ

答えて

0

tldr:

あなたはこのようなyoutube android player api libraryYouTubeIntents

を使用することができますが、YouTubeのアプリ専用intent-filterを作ることができない、ビデオを共有するための意図はありません。それを絞り込むための何か。

私は本当にこれに執着しているので、唯一の方法は、YouTubeのアプリケーションコードをチェックするようだ。私はapkを見つけたhereそしてthisで逆コンパイルします。私はthis fileのコードを見つけたと思う(テキストエラーが私の発見を確認しているようだ)。

私の控除が正しければ、何が起こっているのかは、intentschemeにしてYoutubeアプリを作成するか、具体的にする必要はありません。それはSENDしか使用しません。

0

これ、あなたの特定の質問に答えられないが、私はあなたが望むのと同じように達成すると思います。

Intent youtubeIntent = 
    YouTubeIntents.createPlayVideoIntent(getApplicationContext(), VIDEO_ID); 
startActivity(youtubeIntent); 
+0

私のアプリがYoutubeから明示的なインテントを受け取るようにしたい、私のアプリからYoutubeにインテントを送信したくない。私はYoutubeからインテントを受け取ることができます、私のアプリはインテントフィルターを使って利用可能なものとして登録されています。ユーザーがYoutube pressを押すと、共有ボタンmy appがチューザーで利用可能になります。私が今必要とするのは、SEND暗黙のインテントを引き起こすことができる他のアプリのためにコソサーで利用できるので、Youtube専用にすることです。 Youtubeのみで利用できるようにするために、私のインテントフィルタをより具体的にする必要があります。 – cutiko

関連する問題