1. 程式人生 > >Android啟動一個只知道包名的應用

Android啟動一個只知道包名的應用

我們知道,要啟動一個應用,就需要知道應用啟動Activity的名稱,可是啟動Activity的ACTION引數,這樣就可以通過startActivity(Intent)來啟動,如:

/**被啟動的應用的包名為com.xx.xx,應用的入口為com.xx.xx.TestLaunchActivity**/        Intent intent = new Intent();        intent.setComponent(new ComponentName("com.xx.xx","com.xx.xx.TestLaunchActivity"));        intent.setAction(Intent.ACTION_VIEW);        startActivity(intent);

那如果我們不知道應用的啟動Activity,我們應該怎麼只呢?

Android SDK中有這樣一個API:public abstract Intent getLaunchIntentForPackage (String packageName)。如果packageName存在返回入口Intent, startActivity(Intent)可以啟動應用,否則返回nullimport android.app.Activity;

public class Main extends Activity {           @Override           public void onCreate(Bundle savedInstanceState) {                   super.onCreate(savedInstanceState);                   setContentView(R.layout.test_main);            /**包管理器*/
         PackageManager packageManager = getPackageManager();            Intent intent=new Intent();   

       /**獲得Intent*/

        intent =packageManager.getLaunchIntentForPackage("com.xx.xx");  //com.xx.xx是我們獲取到的包名          if(intent!=null){               startActivity(intent);         }             }   }