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