pc打开android应用包
2016-11-03 18:15:10 u014624241 阅读数 1300

1.一个应用打开另一个应用的一般做法

在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件。

1.2如果既有包名又有主类的名字,那就好 办了,

直接像下面就行:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER);             
ComponentName cn = new ComponentName(packageName, className);             
intent.setComponent(cn); 
startActivity(intent); 

或者这样:

Intent intent = new Intent(); 
    PackageManager packageManager = this.getPackageManager(); 
    intent = packageManager.getLaunchIntentForPackage(packageName); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ; 
    this.startActivity(intent);

1.2.1一般情况下我们是不知道包名和类名的,那怎么办呢?

其实手机安装的每一个应用的包名都是可以查到的,只要我们查到相关应用的包名,再通过它获得主类名,再按照上面的方法就可以了。

第一步:怎么获得包名?

PackageManager packageManager = context.getPackageManager();

packageManager.getInstalledApplications(0);

这就得到了手机上安装的所有应用的程序信息,当然包括包名,只需要查找自己需要的程序就可以了。

下面给出一个完整的方法,以包名为参数,获取主类名之名再启动应用的具体方法:

public static void openCLD(String packageName,Context context) { 
        PackageManager packageManager = context.getPackageManager(); 
        PackageInfo pi = null;    www.2cto.com

            try { 

                pi = packageManager.getPackageInfo("cld.navi.mainframe", 0); 
            } catch (NameNotFoundException e) { 

            } 
            Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); 
            resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
            resolveIntent.setPackage(pi.packageName); 

            List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0); 

            ResolveInfo ri = apps.iterator().next(); 
            if (ri != null ) { 
                String className = ri.activityInfo.name; 

                Intent intent = new Intent(Intent.ACTION_MAIN); 
                intent.addCategory(Intent.CATEGORY_LAUNCHER); 

                ComponentName cn = new ComponentName(packageName, className); 

                intent.setComponent(cn); 
                context.startActivity(intent); 
            } 
    } 

1.2.2利用工具

首先获取包名:

使用aapt //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下

1.以微信为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\Android\weixin531android460.apk
2.运行后的结果如下(仅截取部分):
package: name=’com.tencent.mm’ versionCode=’542’ versionName=’6.1.0.105_r1085424’
uses-permission:’com.tencent.mm.plugin.permission.READ’
uses-permission:’com.tencent.mm.plugin.permission.WRITE’
uses-permission:’com.tencent.mm.plugin.permission.SEND’
uses-permission:’com.tencent.mm.permission.MM_MESSAGE’
sdkVersion:’10’
targetSdkVersion:’16’

我们可以看到关于微信的很多信息,其中就包括包名,微信的包名为:com.tencent.mm

然后启动代码:

 try {  
        PackageManager packageManager = getPackageManager();   
        Intent intent=new Intent();   
        intent = packageManager.getLaunchIntentForPackage("com.tencent.mm");  
        startActivity(intent);  
    } catch (Exception e) {  
        e.printStackTrace();  
        Intent viewIntent = new  
        Intent("android.intent.action.VIEW",Uri.parse("http://weixin.qq.com/"));  
        startActivity(viewIntent);  
    }  

如果手机上安装了微信,就打开微信的主界面,如果没有安装就打开一个浏览器去下载!!!

2.进程之间的通信

Android跨进程通信的四种方式

3.实例

android intent 跳转到第三方应用 如果第三方应用已经启动,但是隐藏在home下,如何让它显示出来?

这里写代码片

3.1判断Intent是否存在,PakageManager.GET_ACTIVITIES报错

3.2Android 判断Intent是否存在

2015-10-19 18:01:42 txadf 阅读数 789

在开发中,有时需要在自己的应用中打开其他应用,自己写了两个方法来获取手机上安装的所有应用。这里主要以打开支付宝为例。

(1)、获取手机上的所有应用,将其放在一个list中。

private List<PackageInfo> getAllApps() {     
		List<PackageInfo> apps = new ArrayList<PackageInfo>();     
		PackageManager packageManager = this.getPackageManager();     
		//获取手机内所有应用     
		List<PackageInfo> paklist = packageManager.getInstalledPackages(0);     
		for (int i = 0; i < paklist.size(); i++) {     
			PackageInfo pak = (PackageInfo) paklist.get(i);     
			//判断是否为非系统预装的应用  (大于0为系统预装应用,小于等于0为非系统应用)   
			if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {     
				apps.add(pak);     
			}     
		}     
		return apps;     
	}  


(2)、打开指定的app(这里打开的是支付宝)。下面的方法是在知道支付宝app的包名的情况下进行判断的,通常情况下不知道包名,可以通过appLabel可以获取应用的名称,以此来匹配。在不存在的情况下,使用手机自带浏览器打开指定的网页。
private static final String PAY_PACKAGE_NAME = "com.eg.android.AlipayGphone";
private static final String PAY_WEB_URL = "https://auth.alipay.com/login/index.htm";
	
	private void launchApp() {   
		PackageManager packageManager = this.getPackageManager();   
		List<PackageInfo> packages = getAllApps();   
		PackageInfo pa = null;   
		for(int i=0;i<packages.size();i++){   
			pa = packages.get(i);   
			//获得应用名   
			String appLabel = packageManager.getApplicationLabel(pa.applicationInfo).toString();   
			//获得包名   
			String appPackage = pa.packageName; 
			Log.e("test", ""+i+"----"+appLabel+"  "+appPackage);   
			
			//安装支付宝,打开支付宝
			if(appPackage.equals(PAY_PACKAGE_NAME)){
				mIntent = packageManager.getLaunchIntentForPackage(PAY_PACKAGE_NAME);
				startActivity(mIntent); 
				return;
			}
		} 
		//为安装支付宝,打开支付宝登陆的网页
		mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(PAY_WEB_URL));
		mIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
		startActivity(mIntent);
	}   

最后,注意添加网络访问的权限。
2015-11-23 20:20:35 aaajj 阅读数 941

如何在Android里隐藏应用图标,又如何打开隐藏的应用呢?

从应用页面调用说起:


在一个应用里可以打开另外一个应用,如

      Intent i = new Intent();

       ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.Settings");

       i.setComponent(comp);

        startActivity(i);

 

在一个应用里打开了设置页面。


 

打开其他应用

 

      ButtoncallButton = (Button)findViewById(R.id.button2);

      callButton.setOnClickListener(newOnClickListener() {

         

          @Override

          public void onClick(Viewarg0) {

             // TODO Auto-generated method stub

             Intenti = new Intent();

              ComponentName comp = //new ComponentName("com.android.settings","com.android.settings.Settings");

                   new ComponentName("com.example.webtest", "com.example.webtest.MainActivity");

             

              i.setComponent(comp);

              startActivity(i);

          }

      });

 

打开隐藏的应用

1. 把webTest应用AndroidMainifest.xml中的

<category android:name="android.intent.category.LAUNCHER"/>

去掉,使其没有应用图标

 

[2015-11-23 09:32:11 - webTest] Installing webTest.apk...

[2015-11-23 09:32:13 - webTest] Success!

[2015-11-23 09:32:13 - webTest] \webTest\bin\webTest.apkinstalled on device

[2015-11-23 09:32:13 - webTest]Done!

 

程序安装到手机中,没有launcher图标,但是在设置—应用 里可以看到

 

2. 在其他应用中调用

             Intenti = new Intent();

              ComponentName comp = //new ComponentName("com.android.settings","com.android.settings.Settings");

                   new ComponentName("com.example.webtest", "com.example.webtest.MainActivity");

             

              i.setComponent(comp);

              startActivity(i);

 

可以把隐藏的应用打开
2015-12-22 11:05:32 u010746364 阅读数 374

(1)打开系统设置界面

		startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
		startActivity( i );

(2)打开系统语言设置界面

		Intent i = new Intent( android.provider.Settings.ACTION_LOCALE_SETTINGS );
		startActivity( i );

(3)直接使用系统的图库打开图片

		Intent galleryIntent = new Intent(Intent.ACTION_PICK,
		        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
		this.startActivityForResult(galleryIntent, PICK_IMAGE_REQUEST);




(4)使用系统应用打开图片

Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,
                "选择图片"), PICK_IMAGE_REQUEST);


2017-10-24 10:23:31 shen71702163 阅读数 477

private void GetAppDetailSettingIntent() {
Activity activity = mCurrActivity;
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
localIntent.setAction(“android.settings.APPLICATION_DETAILS_SETTINGS”);
localIntent.setData(Uri.fromParts(“package”, activity.getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName(“com.android.settings”,”com.android.settings.InstalledAppDetails”);
localIntent.putExtra(“com.android.settings.ApplicationPkgName”, activity.getPackageName());
}
startActivity(localIntent);
}

没有更多推荐了,返回首页