Android 唤起app的多种方式
来源:互联网 发布:淘宝评论怎么写100字 编辑:程序博客网 时间:2024/06/05 07:02
方式一(通过Intent唤起):
我们自己的app代码:
ComponentName componetName = new ComponentName( "com.lh.jimtrency.webviewdemo","com.lh.jimtrency.webviewdemo.MainActivity"); //(另外一个应用程序的包名,要启动的Activity ) Bundle bundle = new Bundle(); ArrayList<String> strings=new ArrayList<>(); strings.add("18883250894"); strings.add("浮夸的小白菜"); bundle.putStringArrayList("userInfo", strings); Intent intent = new Intent(); intent.putExtras(bundle); intent.setComponent(componetName); startActivity(intent);
PS:com.lh.jimtrency.webviewdemo 为对方的包名
com.lh.jimtrency.webviewdemo.MainActivity 为对方的MainActivity类
上面的代码就是唤起了对方App的MainActivity类,那对方还需要怎么配置呢?其实,只需要在AndroidManifest.xml中,对的MainActivity配置时,加上这个属性(exported):
<activity android:name=".MainActivity" android:exported="true"/>
那对方怎么接受呢?
Bundle bundle=getIntent().getExtras();if (bundle!=null){ Toast.makeText(this, bundle.getStringArrayList("userInfo").toString() ,Toast.LENGTH_SHORT).show();}
方式二(通过Uri唤起app):
其实也很简单,就是换了一种方式而已。但,读者,一定要对uri格式有一定连接才行(uri格式详解:http://blog.csdn.net/harvic880925/article/details/44679239)。
下面看看,我们端app的代码怎么写:
Uri uri = Uri.parse("jimtrency://user.info.detail?password=1");Intent intent = new Intent("android.jimtrency.schemeurl.activity");intent.setData(uri);startActivity(intent);
PS: “android.jimtrency.schemeurl.activity” 为跳转时的action
“jimtrency” 为Uri的scheme
“user.info.detail” 为authority
那 对方 app怎么接受呢?
Intent intent = getIntent(); if (null != intent) { Uri uri = intent.getData(); if (uri == null) { return; } String acionData = uri.getQueryParameter("password"); Toast.makeText(this,acionData,Toast.LENGTH_SHORT).show(); }
对方app的AndroidManifest.xml的配置
<activityandroid:name=".MainActivity"><intent-filter> <action android:name="android.jimtrency.schemeurl.activity" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="jimtrency" android:host="user.uri.activity" /></intent-filter></activity>
特别强调:
uri跳转时 ,action 配置 和 category 配置,一定不能缺。category 配置是固定的。如下:
<category android:name="android.intent.category.DEFAULT" />
方法三(简单粗暴:直接通过包名唤起app):
PackageManager packageManager = getPackageManager();Intent intent=new Intent();intent = packageManager.getLaunchIntentForPackage("com.cmcc.jzfpb");startActivity(intent);
那要是没有对应的app怎么办?其实,你可以打卡对应的下载页面就行.
Intent view = new Intent ("android.intent.action.VIEW",Uri.parse(""));startActivity(viewIntent);
阅读全文
1 0
- Android 唤起app的多种方式
- Android自定义URL使用Scheme方式唤起Activity或App
- Android自定义URL使用Scheme方式唤起Activity或App
- Android自定义URL使用Scheme方式唤起Activity或App
- 唤起APP
- 短信或h5页面唤起android app
- 解决android WebView无法唤起其他app
- android中app互调唤起
- 关于H5唤起APP遇到的问题
- Android H5判断是否安装app和唤起APP
- IOS 在自己的app内唤起地图APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 微信及浏览器中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 微信及浏览器中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- Android 如何关闭相机拍照声音
- RabbitMQ入门-3(CentoOS7.x上的安装和配置)
- java基础(16)- 网络编程—socket
- 编辑你的django
- 人人网获取高校、院系数据
- Android 唤起app的多种方式
- SpringMVC懒加载导致的问题一则
- javascript之对象
- python 赋值方式
- POJ-2253 Frogger
- 将一个五位数转换成中文显示
- rsync工具介绍、rsync常用选项和rsync通过ssh同步
- 回答审稿意见的一个简单的模板
- 【编译原理】中间代码(一)