0

選択変数で、チャネルのためContentResolverの通過プログラムをフェッチするとき、私は、混乱の適切ちょうど原因を問題を抱えている。..ロードEPG番組、

I次の例外を取得:

java.lang.SecurityException: Selection not allowed for content://android.media.tv/program?channel=5 

を私は問題なく、チャネルのためのすべてのプログラムをフェッチすることができますが、私は、クエリ・メソッドに選択(WHERE句)を追加するとき、私は上記のセキュリティ例外を取得し、どんなに1 = 1の場合でも選択文字列:

Cursor cursor = resolver.query(programsUri, null, "1 = 1", null, null); 

私は、チャネルのためにすべてのプログラムをフェッチする問題を持っていないので、私は、それが本当に奇妙見つける:私はこれが私のアプリがシステムアプリであることではないに起因することを同僚に言われた

Cursor cursor = resolver.query(programsUri, null, null, null, null); 

私が開発しているデバイスでは、しかし、私は選択プロパティなしですべてのプログラムをフェッチすることができるので、この奇妙なことを再度見つけるので、where-clauseを実行するために余分な権限が必要なのはなぜですか? すべてのプログラムをフェッチして自分のフィルタを選択して、自分のフィルタを実行するのではなく、指定された選択プロパティを使用することを強くお勧めしたいので、誰かが私を助けてくれることを本当に願っています。 OBS:チャネル(?channel = 5)は、アプリケーションによって作成され、第三者のテレビ入力チャネルではありません。

答えて

0

が、私はこの問題を考え出した...

問題は、チャネル・プログラムでフィルタしたい私のアプリは、サードパーティ製のアプリであるということです。これは、アンドロイドが第三者のアプリケーションによるSQLインジェクションをアンドロイドで防止するためにアンドロイドによって選択引数を使用することを許可していないことを意味します。

私たちが望む方法でフィルタリングする方法は、ビルドメソッドTvContract.buildProgramUriXXX()のいずれかで定義する必要があります。私の場合、buildProgramsUriForChannel(Uri channelUri, long startTime, long endTime)を使うことができます。

私の知る限り、ビルドメソッドが目的のフィルタロジックで利用できない場合は、チャンネルのすべてのプログラムをフェッチした後で「手動」にする必要があります。もちろん、アプリケーションがシステムアプリでない限り、それによって選択引数を使用するアクセス権が得られます。

関連する問題