2

私が作成したアプリケーションから、アプリケーションのアクティビティ(メインアクティビティではない)を起動する必要があります。私が立ち上げる活動は独自のものなので、コード(またはマニフェスト)を変更することはできません。Android上の別のアプリケーションからアプリケーションのアクティビティを起動する

たとえば、自分のアプリケーションから誰かのFacebookプロフィールを公開したいと思います。私のアプリからのFacebookへの通常の意図は(私が欲しくない)「ニュースフィード」を開くだろう。他の活動にアクセスする方法を知りたい ありがとうございます!

少しのコード私が持っている:

String PACKAGE="com.facebook.katana"; 
Intent launchIntent = getPackageManager() 
        .getLaunchIntentForPackage(PACKAGE); 
startActivity(launchIntent); 
+1

"他のアクティビティへのアクセス方法を知りたい" - 他のアプリケーションの開発者に、 "あなたのアプリケーションでこのアクティビティを起動するために使う適切な' Intent'構造体は何ですか?その意図を長期的に支える計画ですか?」 – CommonsWare

答えて

1

は、明示的な意図を使用するために必要な特定のアクティビティを起動します。アクティビティーがどのようなアクションに応答するかを知っている場合は、アクションに暗黙のインテントを使用してください。

あなたが行うことができ、明示的な意図を使用するには、以下の(アクティビティから呼び出す提供):また、意図にフラグを追加したアクションとカテゴリを追加することができます

 Intent intent = new Intent(); 
     intent.setComponent(new ComponentName("com.package.name", "com.package.name.ActivityName")); 
     if(getPackageManager().resolveActivity(intent, 0) != null) { 
      startActivity(intent); 
     } else { 
      Toast.makeText(this, "No app installed that can perform this action", Toast.LENGTH_SHORT).show(); 
     } 

。インテントがPackageManagerによって実行可能なインテントとして解決される限り、アクティビティが起動されます。

今すぐ...

Facebookのプロフィールに関する質問は、別のものです。

おそらく、これを達成する最も良い方法は、アクションVIEWでインテントを使用し、プロファイルページにuriでIntent.setDataをポップすることです。それはまた、正しく解決される可能性があるかどうかをチェックする必要があります。そして、それを開くためにサポートされているすべての活動の選択を開始します。これには、Facebookのアプリケーションが含まれていなければなりません。 Facebookアプリケーションやランチャーを使用してインテントを開くのは、ユーザーの責任です。

関連する問題