8

我已经安装了 androidtv-sample-inputs,因此我可以伪造一些电视输入并拥有一些频道,并且我想获取有关这些频道的信息,但是,当我查询以获取该信息时,我得到一个空游标。

到目前为止我尝试过的是:

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");
        }

    }

我已经添加了使用权限,并且我检查了电视输入不是直通的。

<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.providers.tv.permission.ACCESS_ALL_EPG_DATA"/>
4

2 回答 2

3

你使用什么样的权限?

如果您的应用程序不是 signatureOrSystem,则您只能通过对电视提供商的查询访问您自己的频道和节目。您正在执行的所有查询都会根据您的包名称进行过滤。

我猜您可以从频道检索的信息仅限于可从 TvInputInfo 访问的信息。

于 2015-02-24T16:29:26.633 回答
0

除了清单文件中所需的“com.android.providers.tv.xxx”EPG 权限外,您还必须签署您的 .apk !否则,您将在设备上看到所有可用的 TvInput,但没有组成这些 tvInput 的通道(并且这个,没有返回任何错误 ;-))。Android Studio 提供了此功能(“BUILD”菜单条目,然后“生成签名的 APK”)请参阅如何签署 android apk 文件

于 2017-02-22T09:44:15.517 回答