Android啟動一個只知道包名的應用
阿新 • • 發佈:2019-02-15
我們知道,要啟動一個應用,就需要知道應用啟動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); /**包管理器*//**獲得Intent*/
intent =packageManager.getLaunchIntentForPackage("com.xx.xx"); //com.xx.xx是我們獲取到的包名 if(intent!=null){ startActivity(intent); } } }