tux*_*url 23 android uri android-manifest android-intent
我正在尝试允许注册URI以使用我的应用程序打开.就像PatternRepository黑莓和iPhone上的CFBundleURLName/一样CFBundleURLSchemes.如何在Android上获得相同的结果?
系统将发送带有以下链接的电子邮件: myapp://myapp.mycompany.com/index/customerId/12345.这个想法是用户应该能够点击链接以打开应用程序中的客户活动.
我已尝试过其他SO帖子的大量建议,但我无法让操作系统识别模式并打开我的应用程序.
在Gmail应用中,它看起来像这样:myapp:// myapp.mycompany.com/index/customerId/12345.它识别并强调myapp.mycompany.com/index/customerId/12345链接的一部分,并在浏览器中打开它.该myapp://部分未链接.
标准邮件应用程序将整个链接视为纯文本.
我在这里错过了什么?
PS:我已经看过 如何在Android上实现我自己的URI方案 以及如何通过在Android OS中的浏览器中调用URL来注册一些URL命名空间(myapp://app.start/)来访问您的程序?
清单:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="2"
android:versionName="0.0.8"
package="com.mycompany.myapp.client.android">
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="7"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:label="@string/app_name"
android:name="myappApplication"
android:icon="@drawable/ic_icon_myapp"
android:debuggable="true">
<activity
android:label="My App"
android:name=".gui.activity.LoginActivity"
label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".gui.activity.CustomerDetailActivity" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp"/>
</intent-filter>
</activity>
<activity android:name=".gui.activity.CustomerDetailActivity"/>
<activity android:name=".gui.activity.CustomerImageViewerActivity" />
<activity android:name=".gui.activity.CustomerListActivity" android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".gui.activity.HomeActivity" android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".gui.activity.AboutActivity" android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".gui.activity.AccountActivity" android:configChanges="orientation|keyboardHidden" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
tux*_*url 13
最终的解决方案是一个涵盖所有基础的hacky解决方法.该电子邮件现在还包含一个附件,其附件已注册为随应用程序打开.
清单:
<activity android:name=".gui.activity.CustomerDetailActivity" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="myapp.mycompany.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp"
android:host="myapp.mycompany.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/myapp" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
当我使用Google日历处理OAuth时,我不得不将此过滤器添加到我想要接收回调的活动中:
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:scheme="yourapp" android:host="goog"></data>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
当浏览器调用yourapp://googURL时,它将返回到我的Activity.
| 归档时间: |
|
| 查看次数: |
41394 次 |
| 最近记录: |