電話にインストールされている別のアプリを起動できるアプリを開発しています。現在、ActivityPackage と ActivityClass が知られているため、facebook の起動に成功しています。twitter、gplus、gtalk、gmail などの他のアプリを起動したいのですが、対応するクラス名を調べるにはどうすればよいですか? packagemanager を使えばパッケージ名は簡単にわかりますが、同じ方法ではクラス名がわかりません。
2 に答える
電話にインストールされている別のアプリを起動できるアプリを開発しています。
PackageManager
起動するように設計されたアクティビティを照会できます。これを示すサンプル プロジェクトを次に示します。
現在、ActivityPackage と ActivityClass が知られているため、facebook の起動に成功しています。
これをしないでください。
ご覧のとおり、Facebook はいつでもアプリを更新でき、Facebook が選択したアクティビティを変更できることを理解する必要があります。Intent
Facebook がこれを行った場合、元の文書化されておらず、サポートされていない構造 (クラスなど) に依存するコードは壊れてしまうことを認識する必要があります。アプリが壊れていると、ユーザーがアプリに低い評価を付けたり、マーケットなどでコメントを付けたりする原因になることを認識してください。
twitter、gplus、gtalk、gmail などの他のアプリを起動したいのですが、対応するクラス名を調べるにはどうすればよいですか?
これをしないでください。前述のサンプル プロジェクトごとに、ランチャーに属していると宣言されたアクティビティを使用してください。
I'm assuming you're not trying to do this at runtime...
android-apktool can expand the manifests of the the packages you're interested in. That will tell you what activities are available and what intent filters are applied.