あるアプリでしている処理を他のアプリから起動してその結果を取得することって Android なら簡単にできそうですよね、とのことで検討してみました。
リクエストを受ける側の基本的なヤリ方としては
- IntentService を継承
- 処理が終わったら Broadcast Intent を発行
逆にリクエストする側てきには
- Intent 作って startService
- Broadcast を待ち受け
で良いのかどうか。最低限、リクエストできるのかをチェックする必要はありそげ。
なんとなくででっちあがりました。IntentService を定義するプロジェクト側の AndroidManifest の記述が
<service
android:name=".MyIntentService"
android:exported="false" >
</service>
とかになってて SecurityException が発生していたりな不具合が出ました。
とは言え
こうすれば Intent を使って別アプリの何らかの処理が実行できて、その結果を Broadcast で受け取ることができるようです。確認に使ったプロジェクトは以下から入手可能です。
どっちも AndroidStudio なプロジェクトです。
こんな形で
アプリの機能を切り出せる、というのもなかなか面白いですね。