2015-02-23 71 views
4

我已經安裝了androidtv-sample-inputs,這樣我就可以僞造一些電視輸入並擁有一些頻道,並且我想要獲取關於該頻道的信息,但是,當我查詢獲取該信息時我得到一個空遊標。Android電視:獲取頻道列表

什麼我試過到目前爲止:

TvInputManager tv = (TvInputManager)getApplicationContext().getSystemService(Context.TV_INPUT_SERVICE); 

    List<TvInputInfo> list = tv.getTvInputList(); 

    String[] projection = { 
      TvContract.Channels._ID, 
      TvContract.Channels.COLUMN_DISPLAY_NUMBER 
    }; 

    ContentResolver cr = getContentResolver(); 

    Iterator<TvInputInfo> it = list.iterator(); 
    while(it.hasNext()) { 
     TvInputInfo aux = it.next(); 
     Uri uri = TvContract.buildChannelsUriForInput(aux.getId()); 

     Log.d("TAG", uri.toString()); 
     Log.d("TAG", aux.toString()); 

     Cursor cur = cr.query(uri, projection, null, null ,null); 
     Log.d("TAG", cur.toString()); 

     if(cur.moveToFirst()) { 
      Log.d("TAG", "not empty cursors"); 
     } 

    } 

我已經添加了用途的許可,我已經檢查了TV輸入不直通。

<uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" /> 
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" /> 
<uses-permission android:name="com.android.provierts.tv.permission.ACCES_ALL_EPG_DATA"/> 

在此先感謝!

+0

com.android.provierts.tv.permission.ACCES_ALL_EPG_DATA,是'provierts'打算在那裏嗎? – 2017-01-02 08:20:29

回答

1

您使用的是哪種權限?

如果您的應用程序不是systemOrSignature,您只能訪問您的自己的渠道和程序從查詢到電視供應商。您所做的所有查詢都會根據您的軟件包名稱進行過濾。

我想你可以從渠道檢索的信息只限於從TvInputInfo訪問的信息。

+0

我試圖在我的清單中添加此: <許可的android:NAME = 「com.mypackage.mypermision」 機器人:標籤= 「這就是我的權限」 安卓的ProtectionLevel = 「signatureOrSystem」/> <用途-permission android:name =「com.mypackage.mypermision」 但它不起作用。這是你的意思嗎? 我真的不明白這意味着應用程序是系統簽名 – user1139368 2015-02-25 16:12:51

+0

我拼錯了它,它是signatureOrSystem而不是systemOrSignature。這是具有這種保護級別的ACCESS_ALL_EPG_DATA。這意味着它只能由Android系統映像中的應用程序使用,或者使用與聲明權限的應用程序相同的證書進行簽名。 – ph0b 2015-02-25 16:23:51

+0

首先,「READ_EPG_DATA」和「ACCES_ALL_EPG_DATA」有什麼區別。那麼我怎樣才能讀取不同電視輸入提供的頻道呢?如果我無法讓我的應用程序成爲Android系統,並且我無法使用與聲明權限的應用程序相同的證書籤署我的應用程序,我只是無法獲取該信息?我無法知道用戶在任何時候都在看什麼頻道? – user1139368 2015-02-25 16:46:20

0

除了清單文件中需要的「com.android.providers.tv.xxx」EPG權限之外,您必須簽署您的.apk!否則,你會看到你的設備上有所有的TvInput,但是沒有任何通道組成這些tvInput(並且沒有任何錯誤返回;-))。 Android Studio提供了此功能('BUILD'菜單條目,然後'生成簽名的APK')請參閱How to sign an android apk file

+0

你用什麼keystore? – 2017-06-30 18:02:15