web-dev-qa-db-ja.com

別のアプリからアプリを呼び出す

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

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

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);

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

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

20
eightx2

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

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.example.package");
startActivity(intent);
36
Ian G. Clifton

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

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

コードがない場合は、 this を使用してapkからクラスを見つける方法を確認できます。

1
Matthieu