您的位置:首页 > 移动开发 > Android开发

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

2017-02-23 00:00 316 查看
Android SDK中有这样一个API:

public abstract Intent getLaunchIntentForPackage (String packageName)

如果packageName存在返回入口Intent, startActivity(Intent)可以启动应用,否则返回nullimport android.app.Activity;

下面有个小示例:

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);
}
}


getLaunchIntentForPackage 获取到的为null原因

PackageManager tmxx = getPackageManager();
Log.v(TAG," clickedon going get intent");
Intent intent = tmxx.getLaunchIntentForPackage(packgename);

如果包名没有问题,得到的是null,原因应该是该包没有main activity。从而找不到入口。

在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>

一般两个属性是同时存在的。

一般没有这两个属性的是不能独立运行,或者对运行环境要求很严格。

今天遇到这个问题,因应用为第三方,从而有多个入口。所以解决方式就是,如为null就返回。防止报空指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: