Androidプログラムで別のプログラムを開く

2514 ワード

Androidアプリケーションを開発する際には、ここで言う起動時に別のアプリケーションサービスが開いているか、操作中に別のアプリケーションが起動しているかなど、前置き条件が必要になる場合があります.
まず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を取得します.