5

そこは自由である(例えばhttps://play.google.com/store/apps/details?id=com.teslacoilsw.launcherなど)のアプリがありますが、その支払われた機能(この場合は、この1 https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher.prime)別のアプリ、この作業を行いどのよう別のアプリの有料機能を有効にするためにアプリを購入するにはどうすればよいですか?

を購入して有効にすることができますか?

私の推測では、無料アプリは、明示的な意図を起動し、アプリがのtry/catch構造を介して存在しているかどうかを検出できるということです。これの欠点は、同じパッケージ名でアプリを作成し、すべての可能なインテントフィルタを指定する人が簡単に回避できることです。

は、それがどのように動作するかこれは、またはそれはいくつかの他の方法は何ですか?

答えて

0

最も簡単な方法は、アプリBのアクティビティに対してアプリAのstartActivityForResult(...)を使用することです。これは、外部アプリから使用するためにIntentFilterで設定する必要があります。 Bアクティビティと呼ばれる内部では、getCallingActivity()で誰が電話しているかを確認することもできます。例hereがあります。

活動を開始する前に、あなたは(PackageManagerを使用して)Bがインストールされていることをテストすることができますまたはあなただけの活動を開始し、例外をキャッチすることができます。呼ばれる活動に

、あなたはthe PackageManager.checkSignature(String,String)メソッドを使用して呼び出し元のパッケージの署名を確認することができます。 AとBのパッケージ名を渡し、署名が一致する場合はロジックを実行します。

+0

同じパッケージ名で同じ意図に答えるアプリを作成すると、これを回避できますか?パブリッシュするのではなく、ローカルにインストールして他のアプリの機能を有効にするだけです。 – zundi

+0

答えは –

+0

でした。 'PackageManager.checkSignature()'は私が探していたものでした。両方が同じ証明書で署名されている場合はtrueを返します。つまり、他のアプリのソースコードを持っていても簡単に回避することはできません。ありがとう – zundi

2

それを行うための様々な方法があります。 1つの方法は、特別な許可で保護されるコンテンツプロバイダに問い合わせることです。

私はGithubにこれを行うに役立ちライブラリにはかなり長い前にリリースされています:Android Unlocker Library。あなたは、Googleのエコシステム外の機器を扱っている場合は良いオプションだ

は、しかし、開発者の経験から、アプリ内購入は、私によると(したがって、より多くの販売を促進)はるかに優れたユーザーエクスペリエンスを提供します。

+0

どの特別な許可ですか? – zundi

関連する問題