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