Android SDK中有這樣一個API:html
public abstract Intent getLaunchIntentForPackage (String packageName)java
若是packageName存在返回入口Intent, startActivity(Intent)能夠啓動應用,不然返回nullimport android.app.Activity;android
下面有個小示例:app
import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.View; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); PackageManager packageManager = getPackageManager(); Intent intent=new Intent(); intent =packageManager.getLaunchIntentForPackage("pkgName"); if(intent==null){ System.out.println("APP not found!"); } startActivity(intent); } }
PackageManager tmxx = getPackageManager();
Log.v(TAG," clickedon going get intent");
Intent intent = tmxx.getLaunchIntentForPackage(packgename);ide
若是包名沒有問題,獲得的是null,緣由應該是該包沒有main activity。從而找不到入口。.net
在androidmanifest.xml設置main activity範例以下:指針
<activity Android:name="ConfigureActivity" android:icon="@drawable/weather" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
通常兩個屬性是同時存在的。code
通常沒有這兩個屬性的是不能獨立運行,或者對運行環境要求很嚴格。xml
今天遇到這個問題,因應用爲第三方,從而有多個入口。因此解決方式就是,如爲null就返回。防止報空指針。htm