Android启动另外一个应用(只需知道package name)

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

相关文章
相关标签/搜索