Androidプログラムで別のプログラムを開く
2514 ワード
Androidアプリケーションを開発する際には、ここで言う起動時に別のアプリケーションサービスが開いているか、操作中に別のアプリケーションが起動しているかなど、前置き条件が必要になる場合があります.
まずGoogleのコードをください.
1.既知のパッケージ名とクラス名の場合:
主にintentの属性ComponentNameの設定です.
この方法の欠点は、このアプリケーションのpkg、すなわちパッケージ名、およびactivityのクラス名を知らなければならないことである.しかし、多くの場合、サードパーティアプリケーションのパッケージ名などの情報を知らないo(′□╰)o
2、パッケージ名が分からない場合はandroidのパッケージマネージャPackageManager(そして私の目の近視)を使う必要があります
どちらの方法もintentによって起動され、主な違いはintentの属性設定方法が異なることです.1つ目はComponentNameの設定で、2つ目はPackageManagerを使用して特定のパッケージ名(パッケージ名もpkgManagerで取得)の起動intentを取得します.
まずGoogleのコードをください.
1.既知のパッケージ名とクラス名の場合:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER); // C# JAVA MAIN
ComponentName cn = new ComponentName(packageName, className); //ComponentName action category data etc.
intent.setComponent(cn);
startActivity(intent);
主にintentの属性ComponentNameの設定です.
この方法の欠点は、このアプリケーションのpkg、すなわちパッケージ名、およびactivityのクラス名を知らなければならないことである.しかし、多くの場合、サードパーティアプリケーションのパッケージ名などの情報を知らないo(′□╰)o
2、パッケージ名が分からない場合はandroidのパッケージマネージャPackageManager(そして私の目の近視)を使う必要があります
// iscan
private void startIscan() {
PackageManager pm=getPackageManager(); //
// pm.getInstalledApplications(0); // , SB , 250 ~~ !!!
Intent intent = new Intent();
intent=pm.getLaunchIntentForPackage("com.iData.idata_iscan"); // activity service etc. intent , componentName
startActivity(intent); // startService(intent)
}
どちらの方法もintentによって起動され、主な違いはintentの属性設定方法が異なることです.1つ目はComponentNameの設定で、2つ目はPackageManagerを使用して特定のパッケージ名(パッケージ名もpkgManagerで取得)の起動intentを取得します.