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

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

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就返回。防止报空指针。

转载于:https://my.oschina.net/u/2473169/blog/844673

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值