20

私が開発しているこのアプリでは、すでに電話にインストールされている別のアプリをロード/呼び出す必要があります。これは私自身が使用するためのアプリケーションなので、他のアプリがインストールされているかどうかを確認する必要はありません。インストールされていることはわかっています。

私はこの問題を何時間もグーグルで検索しましたが、うまくいくものが見つかりません。パッケージ名とクラス名を見つけるためのガイドラインが本当に悪いからです。

cmdとadbを介して、呼び出したいアプリケーションに関する情報が次のとおりであることがわかりました:package:/data/app/com.soundcloud.android-1.apk=com.soundcloud.android(まさにそれですcmdウィンドウで言った。)

私はこのようなことを試みました:

Intent i = new Intent();
i.setClassName("/data/app/com.soundcloud.android-1.apk", "com.soundcloud.android");
startActivity(i);

しかし、私のアプリは代わりにクラッシュします。誰かがこれがアプリを呼び出すことができると言ったので、私は上記のコードを使用しました:

Intent i = new Intent();
i.setClassName("<package_name>","<Class Name(with package name)>");
startActivity(i);

誰かが本当に何を書くべきか知っていますか?

PS:私自身のアプリは、呼び出されたアプリで何が起こっているかについての情報を必要としません。

4

2 に答える 2

36

PackageManager を使用して、パッケージのインテントを取得します。

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.example.package");
startActivity(intent);
于 2011-01-13T05:21:39.430 に答える
1

ドキュメントは こちらです。

あなたの例では、com.soundcloud.android は実際にはパッケージ名なので、最初の引数にする必要があります。2 つ目については、使用するクラスを把握する必要があります。

コードがない場合は、この.apk からクラスを見つける方法を確認できます。

于 2011-01-12T22:35:17.997 に答える