0

あるアプリケーションを別のアプリケーションから呼び出したい。

私のJavaファイルコード:

Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);

しかし、正確なパッケージパスを指定する際に問題が発生し、マニフェストでそのコードの権限がわかりません。どうか、これについて私を助けてください。

4

3 に答える 3

4

アプリ内の別のアクティビティではなく、別のアプリを起動することを本当に意味していると仮定します。

次に、これを行うには2つの方法があります。ドキュメントによると、(暗黙の)インテントは、「異なるアプリケーションのコード間でレイトランタイムバインディングを実行するために提供する」「実行される操作の抽象的な記述」である暗黙のインテントを使用してみることができます。インターフェイスを使用してネットワーク経由でメソッドを起動しようとするようなものです。起動されたオブジェクトのクラスが、宣言したアクションとカテゴリを処理できることだけを正確に確認することはできません。

2番目のアプローチは、明示的な意図です。これは、有線で具体的な呼び出しを行うようなものです。パッケージとクラス名がわかっている場合、これは機能するはずです。

    Intent intent = new Intent(Intent.ACTION_MAIN);
    //intent.putExtra("plain_text", "Testing");
    intent.setClassName("packagename", "packagename.ClassName"); // Explicit Intent
    try {
        startActivity(intent);
    }
    catch (Exception e)
    {
        Log.d(TAG","onCreate",e);
    }
}

ニーズや起動しようとしている場所に応じて、フラグを使用して情報を追加できます。

JAL

于 2011-04-04T19:11:31.550 に答える
3

アプリから外部アクティビティを開始するには、使用している方法とは少し異なる方法を使用します。特定のアクションでインテントを作成する必要があります。たとえば、ギャラリーから画像をフェッチするインテントを起動すると、次のようになります。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICK);

ロードするアクティビティを明示的に定義するのではなく、実行するアクションの種類を定義することに注意してください。次に、Androidは、この種の実行インテントを処理するために登録されたアクティビティを選択します(またはユーザーに選択させます)。

于 2011-04-04T18:34:09.870 に答える
2

自分がしていることについてもう少し具体的にする必要があるかもしれません。たとえば、メインのアクティビティから別のアクティビティを起動するだけの場合は、次のように機能します。

Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("key", "data"); //put any data you want to pass into the new activity
startActivity(intent);

次に、次のようにマニフェストに新しいアクティビティを配置するようにしてください。

<activity android:name=".OtherActivity"
      android:label="@string/other"/>

あなたの目標が何か他のものであるならば、あなたはあなたがしたいことで鉱石を特定するべきです。

于 2011-04-04T18:08:35.120 に答える