当前位置:首页 » 安卓系统 » android调用其他应用

android调用其他应用

发布时间: 2022-10-25 12:02:12

Ⅰ android中一个应用程序如何调用到另一个另一程序的activity

生成一个要被调用的APK。在其Manifest.xml设置中,与一般的写法大致相同,唯一区别的地方在于-->安装这个要被调用的APK。安装完毕之后,你会发现,系统中找不到这个程序。别急,它确实安装在手机里面了,但是因为他不是main的,所以系统不会把他当做Application的入口程序。而要想打开这个activity,只有知道它名字的人才可以。跟系统的intent一样使用。它的名字定义为"testApp",所以,这里用这个字符串就可以调用它了在另一个项目中调用上述APK。代码如下java">Intentintent=newIntent("testApp");startActivity(intent);启动另外一个apkjava">IntentmIntent=newIntent();ComponentNamecomp=newComponentName(packageName,activityName);mIntent.setComponent(comp);mIntent.setAction("android.intent.action.VIEW");startActivity(mIntent);

Ⅱ android怎么打开另外的应用程序

我们可以通过ComponentName以及Intent的setComponent来实现:在一个应用程序里面启动另外一个已经安装的应用程序或系统程序。
下面是一个在一个应用程序里面启动另外一个已经安装的程序,如下:
[javascript]
//组件名称,第一个参数是应用程序的包名,后一个是这个应用程序的主Activity
ComponentName com = new ComponentName("com.antroid.Test", "com.antroid.Test.TestActivity");
Intent intent = new Intent();
//设置部件
intent.setComponent(com);
startActivity(intent);
//组件名称,第一个参数是应用程序的包名,后一个是这个应用程序的主Activity
ComponentName com = new ComponentName("com.antroid.Test", "com.antroid.Test.TestActivity");
Intent intent = new Intent();
//设置部件
intent.setComponent(com);
startActivity(intent);
我们也可以使用下面的代码启动系统的日历程序:
[javascript]
Intent intent=new Intent();
intent.setComponent(new ComponentName("com.android.calendar", "com.android.calendar.LaunchActivity"));
startActivity(intent);
Intent intent=new Intent();
intent.setComponent(new ComponentName("com.android.calendar", "com.android.calendar.LaunchActivity"));
startActivity(intent

Ⅲ Android 跨应用间调用: URL Scheme

Android中的自定义的 URL Scheme 是一种页面内跳转协议,也可以被称为 URLRouter ,就是通过类似打开网页的方式去通过路由打开一个Activity,而非直接通过显式Intent方式去进行跳转。这样隐式intent的方法跳转好处如下:

上文已经说过, URL Scheme 是就通过类似打开网页的方式去通过路由打开一个Activity,其协议格式和我们打开网页输入的网址类似。

一个完整的完整的URL Scheme协议格式由scheme、host、port、path和query组成,其结构如下所示:

其中scheme既可以是Android中常见的协议,也可以是我们自定义的协议。Android中常见的协议包括content协议、http协议、file协议等,自定义协议可以使用自定义的字符串,当我们启动第三方的应用时候,多是使用自定义协议。

如下是一个自定义协议的URI:

通过上面的路径 Scheme、Host、port、path、query全部包含:

URL Scheme 的使用方法简要言之就是先在manifest中配置能接受Scheme方式启动的activity;当需要调用时,将Scheme协议的URi以Data的形式加入到Intent中,隐式调用该activity。

1). 在AndroidManifest.xml中对<activity >标签增加<intent-filter>设置Scheme

上面的设置中可以看到,MainActivity包含多个<intent-filter>设置,第一个是正常的启动,也就是在应用列表中启动;第二个是通过 URL Scheme 方式启动,其本身也是隐式Intent调用的一种,不同在于添加了<data>属性,定义了其接受 URL Scheme 协议格式为 urlschemel://auth_activity

这里需要说明下, URL Scheme 协议格式中,组成URI的这些属性在<data >标签中都是可选的 ,但存在如下的依赖关系:

当我们将intent对象中的Uri参数与intent-filter中的<data>标签指定的URI格式进行对比时,我们只对比intent-filter的<data>标签指定的部分,例如:

需要注意的是,intent-filter的<data>标签在指定path的值时,可以在里面使用通配符*,起到部分匹配的效果。

2). 使用URL启动Activity

当然可以在网页中调用

或者是在JS中调用

3.)如何判断URL Scheme是否有效

有时候需要把一些辅助性的、较为独立的APP在Home Launcher中隐藏起来,只允许一些特定的APP调用。这个时候,我们可以利用 URL Scheme 协议来做到这一点,设置AndroidManifest.xml中对<activity >标签如下

因为Home Launcher列出的应用图标要求必须有Activity同时满足

上面的配置中有多余的category和data限制存在,所以并不匹配,不会在Home Launcher出现,但是可以使用 URL Scheme 来启动。

这样就可以将一组APP设置一个统一的入口,然后根据实际需要在调用不同子APP,即所谓的 APP业务组件化 , URL Scheme 在其中有着重要的作用,更进一步讨论会在以后的文章中呈现,敬请期待。

参考文献:
http://blog.csdn.net/iispring/article/details/48481793
http://blog.csdn.net/hb707934728/article/details/53196419
http://www.cnblogs.com/whoislcj/p/5825333.html

Ⅳ android 应用调用另外一个应用的activity

这个首先你要知道app2的activity的名字才行。你知道了就简单了,不知道的话,只能通过log一个个的看。比如app2中有个activity的名字为MyActivity,完整的包名是com.example.app2.MyActivity.那么你从app1跳过去可以这样跳:

Intent in = new Intent();
in.setClassName("com.example.app2", "com.example.app2.MyActivity");
mContext.startActivity(in);

Ⅳ 如何通过android的应用程序调用另一个应用

  1. 如果你知道另外一个程序的类名就可以这样写

intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentNamecn=newComponentName(packageName,className);
intent.setComponent(cn);
startActivity(intent);

2.如果你只知道包名不知道类名,首先获取类名

privatevoidopenApp(StringpackageName){
PackageInfopi=getPackageManager().getPackageInfo(packageName,0);

IntentresolveIntent=newIntent(Intent.ACTION_MAIN,null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);

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

ResolveInfori=apps.iterator().next();
if(ri!=null){
StringpackageName=ri.activityInfo.packageName;
StringclassName=ri.activityInfo.name;

Intentintent=newIntent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentNamecn=newComponentName(packageName,className);

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

然后使用1中的方法调用程序

Ⅵ android 在一个应用程序里面调用另一个应用程序 打开页面怎么与原先应用程序的页面一致

这个是行不通的,有些程序的Activity 是不能通过其他程序打开的,会直接出现java.lang.SecurityException: Permission Denial:

Ⅶ 如何在一个android应用里面调用一个系统的应用程序呢

//调用系统照相机
public void cameraInfo(){
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//照片保存的路径及保存的名称
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File("/sdcard/JetMobileDev/camera.jpg"));
startActivityForResult(intent, 1);
}

Ⅷ Android 调用其他应用打开文件

/**
*打开文件
*@paramfile
*/
privatevoidopenFile(Filefile){
Intentintent=newIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//设置intent的Action属性
intent.setAction(Intent.ACTION_VIEW);
//获取文件file的MIME类型
Stringtype=getMIMEType(file);
//设置intent的data和Type属性。
intent.setDataAndType(/*uri*/Uri.fromFile(file),type);
//跳转
startActivity(intent);
}
/**
*根据文件后缀名获得对应的MIME类型。
*@paramfile
*/
privateStringgetMIMEType(Filefile){
Stringtype="*/*";
StringfName=file.getName();
//获取后缀名前的分隔符"."在fName中的位置。
intdotIndex=fName.lastIndexOf(".");
if(dotIndex<0){
returntype;
}
/*获取文件的后缀名*/
Stringend=fName.substring(dotIndex,fName.length()).toLowerCase();
if(end=="")returntype;
//在MIME和文件类型的匹配表中找到对应的MIME类型。
for(inti=0;i<MIME_MapTable.length;i++){//MIME_MapTable??在这里你一定有疑问,这个MIME_MapTable是什么?
if(end.equals(MIME_MapTable[i][0]))
type=MIME_MapTable[i][1];
}
returntype;
}具体的看这篇文章http://tonysun3544.iteye.com/blog/1265884

热点内容
c语言稀疏矩阵转置矩阵 发布:2025-02-01 03:47:57 浏览:530
坦克世界挂机脚本有哪些 发布:2025-02-01 03:07:41 浏览:133
串口编程at 发布:2025-02-01 03:06:05 浏览:908
合资汽车配置有什么 发布:2025-02-01 02:56:07 浏览:78
wifi共享精灵源码 发布:2025-02-01 02:40:15 浏览:973
java软件怎么安装 发布:2025-02-01 02:40:09 浏览:549
河北税务局电子密码是什么 发布:2025-02-01 02:40:07 浏览:835
检查服务器设置是什么意思 发布:2025-02-01 02:31:26 浏览:185
神偷四第四章密码是多少 发布:2025-02-01 02:07:29 浏览:13
qq登录在哪个文件夹 发布:2025-02-01 01:57:59 浏览:627