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

相關文章
相關標籤/搜索