4

私はAndroidアプリのペアを持っています。1つは無料の「リーダー」アプリで、もう1つはアセットのサブディレクトリにテキストファイルを含む有料の「データ」アプリです。

リーダーアプリは、次のコードを使用してデータアプリのテキストファイルにアクセスします。

Intent myIntent = new Intent("myintent");
List<ResolveInfo> dataPacks = packageManager.queryIntentActivities(myIntent, 0);
String packageName = dataPacks.get(0).activityInfo.packageName
Resources res = packageManager.getResourcesForApplication(packageName);
AssetManager assets = res.getAssets();
String[] dataFiles = assets.list("Data");

これは正常に機能していますが、GooglePlayを使用してJellyBeanにダウンロードされたアプリが機能していません(データファイルが空です)。アプリがメールから直接インストールされている場合は問題ないので、私の問題はGooglePlayの最近のセキュリティ変更に関連していると思われます。しかし、これらは取り消されたと言われていますが、私はまだ問題を抱えています。

誰かが何が悪いのかを明らかにすることができますか?(残念ながら、私はJelly Beanデバイスを持っていません)

または、誰かがデータアプリのtxtファイルにアクセスするためのより良いメカニズムを提案できますか?

ありがとう

4

1 に答える 1

5

JB デバイスの有料アプリは「フォワード ロック」されています。これは、APK が 2 つの部分に分割されていることを意味します。1 つはパブリック リソースを含み、もう 1 つはプライベート リソースとコードを含み、他のアプリでは読み取れません。詳細はこちら: http://nelenkov.blogspot.com/2012/07/using-app-encryption-in-jelly-bean.html

ファイルがどのように分割されているかは詳しく調べていませんが、あなたが見ている問題は、アセットがプライベート APK の一部であることを示唆しています。これは、アセットに通常 API キーなどを貼り付けているためです。

そのため、ContentProvider やリモート サービスなど、より間接的な方法を使用して 2 つのアプリ間で情報を共有する必要があります。自分のアプリだけがそれらを使用できるように、それらにアクセスするには署名のアクセス許可が必要であることを確認してください。

于 2012-10-04T02:54:17.807 に答える