网页打开android app怎么传参数

网页打开android app怎么传参数,第1张

首先,网页和app页面进行交互,其实会很快想到JS交互,但是现在需要在第三方浏览器中,那就没法拿到Webview,也就没法js互交,所以这里Android也提供有方法。

看一个静态页面(html):

<BODY>

<a href="hjz://com.zjmk.hjz_progressmotirx/openwith?gameid=12007&pk_name=com.surfing.android.tastyfood">启动应用程序</a>

</p></br></p>

<a href="hjz://com.zjmk.hjz_progressmotirx/down?apkurl=http://down.hjz518.com/upload/APK/2015-5/19/150519172102.apk&apkname=黄金指&memo=这是一款牛逼的手赚软件&gameid=12007&pk_name=com.surfing.android.tastyfood">启动应用程序下载页面</a>

</BODY>

我们看看href里面的组成:

- hjz://:这里的hjz://是“scheme”。

- com.zjmk.hjz_progressmotirx:这个是“host”。

- /down:这个是方法名前缀“pathPrefix”。

- apkurl=….&pkname=…:这个是传递的参数。

看到以上代码可能还是不是很明白这些有什么用,那么接着往下看….

看android端:

其实在android里面的项目清单住处的Activity下面可以添加很多数据节点,如 ,,,….

<activity android:name=".OpenapkActivity"

android:label="@string/app_name"

android:theme="@android:style/Theme.Black.NoTitleBar">

<intent-filter>

<action android:

name="android.intent.action.VIEW"/>

<category android:

name="android.intent.category.DEFAULT" />

<category

name="android.intent.category.BROWSABLE" />

<data

android:scheme="hjz" android:host="com.zjmk.hjz_progressmotirx" android:pathPrefix="/openwith"/>

</intent-filter>

</activity>

看这个activity注册,在其下面添加了几个数据节点,action,category,data。看来data里面的数据应该就很明白了,data节点里面的数据都是和我们网页相对应的,如

scheme=”hjz”,//协议

host=”com.zjmk.hjz_progressmotirx”//主机

pathPrefix=”/openwith”//方法前缀

只有先对应才能正确的启动页面。

在activity中获取数据:

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState)

setContentView(R.layout.openapklayput)

Intent intent=getIntent()

String action = intent.getAction()

if(Intent.ACTION_VIEW.equals(action)){

Uri uri =intent.getData()

if(uri != null){

//根据属性值获取数据

String gameid=

uri.getQueryParameter("gameid")

String pkname=

uri.getQueryParameter("pk_name")

PackageManager packageManager =

getPackageManager()

Intent intent2=new Intent()

intent2 =packageManager

.getLaunchIntentForPackage(pkname)

startActivity(intent2)

Intent intent1=

new Intent(this,MotirxServices.class)

}

}

}

……到这里可以完成第三方浏览器和自己app应用的交互在跳过WebVIew的情况下,但是这里可能会有一个悲催的事情,就是他的兼容性。在369获取猎豹浏览器中href=“”;这里在scheme前面自动加上http://…..

这里就导致不能正常的打开我们指定的app页面。系统内置浏览器肯定是可以的,只是第三方浏览器可能存在这个问题,不过我的手机测试基本都可以,没问题。

android系统服务,如Uri,intent参数

可以在Intent中指定程序要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料。都指定好后,只要调用startActivity(),Android系统会自动寻找最符合你指定要求的应用程序,并执行该程序。

★intent大全:

1.从google搜索内容

Intent intent = new Intent()

intent.setAction(Intent.ACTION_WEB_SEARCH)

intent.putExtra(SearchManager.QUERY,"searchString")

startActivity(intent)

2.浏览网页

Uri uri =Uri.parse("htt。。。。。。。。om")

Intent it = new Intent(Intent.ACTION_VIEW,uri)

startActivity(it)

3.显示地图

Uri uri = Uri.parse("geo:38.899533,-77.036476")

Intent it = newIntent(Intent.Action_VIEW,uri)

startActivity(it)

4.路径规划

Uri uri =Uri.parse("http。。。。。。。。。。/maps?

f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en")

Intent it = newIntent(Intent.ACTION_VIEW,URI)

startActivity(it)

5.拨打电话

Uri uri =Uri.parse("tel:xxxxxx")

Intent it = new Intent(Intent.ACTION_DIAL,uri)

startActivity(it)

6.调用发短信的程序

Intent it = newIntent(Intent.ACTION_VIEW)

it.putExtra("sms_body", "TheSMS text")

it.setType("vnd.android-dir/mms-sms")

startActivity(it)

7.发送短信

Uri uri =Uri.parse("smsto:0800000123")

Intent it = newIntent(Intent.ACTION_SENDTO, uri)

it.putExtra("sms_body", "TheSMS text")

startActivity(it)

String body="this is sms demo"

Intent mmsintent = newIntent(Intent.ACTION_SENDTO, Uri.fromParts("smsto",

number, null))

mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body)

mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,true)

mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,true)

startActivity(mmsintent)

8.发送彩信

Uri uri =Uri.parse("content://media/external/images/media/23")

Intent it = newIntent(Intent.ACTION_SEND)

it.putExtra("sms_body","some text")

it.putExtra(Intent.EXTRA_STREAM, uri)

it.setType("image/png")

startActivity(it)

StringBuilder sb = new StringBuilder()

sb.append("file://")

sb.append(fd.getAbsoluteFile())

Intent intent = newIntent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto",

number, null))

// Below extra datas are all optional.

intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT,subject)

intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body)

intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI,sb.toString())

intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,composeMode)

intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,exitOnSent)

startActivity(intent)

9.发送Email

Uri uri =Uri.parse("mailto:xxx@abc.com")

Intent it = newIntent(Intent.ACTION_SENDTO, uri)

startActivity(it)

Intent it = new Intent(Intent.ACTION_SEND)

it.putExtra(Intent.EXTRA_EMAIL,"me@abc.com")

it.putExtra(Intent.EXTRA_TEXT, "Theemail body text")

it.setType("text/plain")

startActivity(Intent.createChooser(it,"Choose Email Client"))

Intent it=new Intent(Intent.ACTION_SEND)

String[] tos={"me@abc.com"}

String[]ccs={"you@abc.com"}

it.putExtra(Intent.EXTRA_EMAIL, tos)

it.putExtra(Intent.EXTRA_CC, ccs)

it.putExtra(Intent.EXTRA_TEXT, "Theemail body text")

it.putExtra(Intent.EXTRA_SUBJECT, "Theemail subject text")

it.setType("message/rfc822")

startActivity(Intent.createChooser(it,"Choose Email Client"))

Intent it = newIntent(Intent.ACTION_SEND)

it.putExtra(Intent.EXTRA_SUBJECT, "Theemail subject text")

it.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3")

sendIntent.setType("audio/mp3")

startActivity(Intent.createChooser(it,"Choose Email Client"))

10.播放多媒体

Intent it = new Intent(Intent.ACTION_VIEW)

Uri uri =Uri.parse("file:///sdcard/song.mp3")

it.setDataAndType(uri,"audio/mp3")

startActivity(it)

Uri uri

=Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1")

Intent it = new Intent(Intent.ACTION_VIEW,uri)

startActivity(it)

11.uninstall apk

Uri uri =Uri.fromParts("package", strPackageName, null)

Intent it = newIntent(Intent.ACTION_DELETE, uri)

startActivity(it)

12.install apk

Uri installUri = Uri.fromParts("package","xxx", null)

returnIt = newIntent(Intent.ACTION_PACKAGE_ADDED, installUri)

打开照相机

<1>Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null)

this.sendBroadcast(i)

<2>long dateTaken = System.currentTimeMillis()

String name = createName(dateTaken) + ".jpg"

fileName = folder + name

ContentValues values = new ContentValues()

values.put(Images.Media.TITLE, fileName)

values.put("_data", fileName)

values.put(Images.Media.PICASA_ID, fileName)

values.put(Images.Media.DISPLAY_NAME, fileName)

values.put(Images.Media.DESCRIPTION, fileName)

values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName)

Uri photoUri = getContentResolver().insert(

MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values)

Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)

inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri)

startActivityForResult(inttPhoto, 10)

14.从gallery选取图片

Intent i = new Intent()

i.setType("image/*")

i.setAction(Intent.ACTION_GET_CONTENT)

startActivityForResult(i, 11)

打开录音机

Intent mi = new Intent(Media.RECORD_SOUND_ACTION)

startActivity(mi)

16.显示应用详细列表

Uri uri =Uri.parse("market://details?id=app_id")

Intent it = new Intent(Intent.ACTION_VIEW,uri)

startActivity(it)

//where app_id is the application ID, findthe ID

//by clicking on your application on Markethome

//page, and notice the ID from the addressbar

刚才找app id未果,结果发现用package name也可以

Uri uri =Uri.parse("market://details?id=")

这个简单多了

17寻找应用

Uri uri =Uri.parse("market://search?q=pname:pkg_name")

Intent it = new Intent(Intent.ACTION_VIEW,uri)

startActivity(it)

//where pkg_name is the full package pathfor an application

18打开联系人列表

<1>

Intent i = new Intent()

i.setAction(Intent.ACTION_GET_CONTENT)

i.setType("vnd.android.cursor.item/phone")

startActivityForResult(i, REQUEST_TEXT)

<2>

Uri uri = Uri.parse("content://contacts/people")

Intent it = new Intent(Intent.ACTION_PICK, uri)

startActivityForResult(it, REQUEST_TEXT)

19 打开另一程序

Intent i = new Intent()

ComponentName cn = newComponentName("com.yellowbook.android2",

"com.yellowbook.android2.AndroidSearch")

i.setComponent(cn)

i.setAction("android.intent.action.MAIN")

startActivityForResult(i, RESULT_OK)

20.调用系统编辑添加联系人(高版本SDK有效):

Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT)

it.setType("vnd.android.cursor.item/contact")

//it.setType(Contacts.CONTENT_ITEM_TYPE)

it.putExtra("name","myName")

it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY,

"organization")

it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL,"email")

it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone")

it.putExtra(android.provider.Contacts.Intents.Insert.SECONDARY_PHONE,

"mobilePhone")

it.putExtra( android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,

"workPhone")

it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title")

startActivity(it)

21.调用系统编辑添加联系人(全有效):

Intent intent = newIntent(Intent.ACTION_INSERT_OR_EDIT)

intent.setType(People.CONTENT_ITEM_TYPE)

intent.putExtra(Contacts.Intents.Insert.NAME, "My Name")

intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890")

intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE,Contacts.PhonesColumns.TYPE_MOBILE)

intent.putExtra(Contacts.Intents.Insert.EMAIL, "com@com.com")

intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,

Contacts.ContactMethodsColumns.TYPE_WORK)

startActivity(intent)

★intent action大全:

android.intent.action.ALL_APPS

android.intent.action.ANSWER

android.intent.action.ATTACH_DATA

android.intent.action.BUG_REPORT

android.intent.action.CALL

android.intent.action.CALL_BUTTON

android.intent.action.CHOOSER

android.intent.action.CREATE_LIVE_FOLDER

android.intent.action.CREATE_SHORTCUT

android.intent.action.DELETE

android.intent.action.DIAL

android.intent.action.EDIT

android.intent.action.GET_CONTENT

android.intent.action.INSERT

android.intent.action.INSERT_OR_EDIT

android.intent.action.MAIN

android.intent.action.MEDIA_SEARCH

android.intent.action.PICK

android.intent.action.PICK_ACTIVITY

android.intent.action.RINGTONE_PICKER

android.intent.action.RUN

android.intent.action.SEARCH

android.intent.action.SEARCH_LONG_PRESS

android.intent.action.SEND

android.intent.action.SENDTO

android.intent.action.SET_WALLPAPER

android.intent.action.SYNC

android.intent.action.SYSTEM_TUTORIAL

android.intent.action.VIEW

android.intent.action.VOICE_COMMAND

android.intent.action.WEB_SEARCH

android.net.wifi.PICK_WIFI_NETWORK

android.settings.AIRPLANE_MODE_SETTINGS

android.settings.APN_SETTINGS

android.settings.APPLICATION_DEVELOPMENT_SETTINGS

android.settings.APPLICATION_SETTINGS

android.settings.BLUETOOTH_SETTINGS

android.settings.DATA_ROAMING_SETTINGS

android.settings.DATE_SETTINGS

android.settings.DISPLAY_SETTINGS

android.settings.INPUT_METHOD_SETTINGS

android.settings.INTERNAL_STORAGE_SETTINGS

android.settings.LOCALE_SETTINGS

android.settings.LOCATION_SOURCE_SETTINGS

android.settings.MANAGE_APPLICATIONS_SETTINGS

android.settings.MEMORY_CARD_SETTINGS

android.settings.NETWORK_OPERATOR_SETTINGS

android.settings.QUICK_LAUNCH_SETTINGS

android.settings.SECURITY_SETTINGS

android.settings.SETTINGS

android.settings.SOUND_SETTINGS

android.settings.SYNC_SETTINGS

android.settings.USER_DICTIONARY_SETTINGS

android.settings.WIFI_IP_SETTINGS

android.settings.WIFI_SETTINGS

android.settings.WIRELESS_SETTINGS


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11441043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存