任何人都可以指导我如何从Android浏览器启动我的Android应用程序?
假设我想定义一个URI,例如:
myapp://path/to/what/i/want?d=This%20is%20a%20test
Run Code Online (Sandbox Code Playgroud)
必须由我自己的应用程序或服务处理.请注意,该方案"myapp",而不是"http",或"ftp".这正是我的意图:为Android OS全局定义自己的URI架构.这可能吗?
这有点类似于某些程序已经在做的事情,例如Windows系统,例如Skype(skype://)或任何torrent下载程序(torrent://).
我希望能够在用户点击给定模式的URL而不是允许浏览器打开它时提示我的应用程序打开链接.这可能是当用户在浏览器或电子邮件客户端中的网页上或在新鲜应用中的WebView中时.
例如,从手机中的任意位置点击YouTube链接,您就有机会打开YouTube应用.
我如何为自己的应用程序实现此目的?
因此,我想创建一个Android应用程序,以便在Android操作系统中注册(或者只是在系统启动时启动),当手机用户点击网页浏览器内网页上的特殊按钮时:
<a href="myapp://mysettings">Foo</a>
Run Code Online (Sandbox Code Playgroud)
我的应用程序将弹出并使用该URL中发送的参数运行.
那我该怎么做呢?
我需要一个代码教程!
我的应用程序定义了意图过滤器来处理来自我的网站定义的URL
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="www.host.com" android:scheme="http"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="www.host.com" android:scheme="https"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
该应用程序正确检测正确主机的URL,但查询用户是否在应用程序或浏览器中打开它们.我尝试使用此处指定的应用链接验证.https://developer.android.com/training/app-links/index.html
如我的服务器日志中所示,安装后,应用程序设备会查询/well-known/assetlinks.json,并以200状态响应.使用.测试数字资产文件
https:// digitalassetlinks.googleapis.com/v1/statements:list?source.web.site= https:// <domain1>:<port>&relation = delegate_permission/common.handle_all_urls
API并没有发现任何错误.
使用了获得assetlinks.json文件中的SHA256
keytool -list -v -keystore my-release-key.keystore
Run Code Online (Sandbox Code Playgroud)
应用程序签名的.keystore.
运行https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://<domain1>:<port>&relation=delegate_permission/common.handle_all_urls返回链接验证状态为"ask",表示验证失败.为什么验证会失败?
我可以在一个网站上添加一个链接,例如"navigon://",在iOS设备中,如果安装了Navigon应用程序,它将打开它.
是否有类似的简单方法从Android网站(假设已安装)打开应用程序?
首先,我的问题非常类似于此,这个和这个.我想要实现的Android文档就在这里.我无法使用这些资源来使用它,所以请不要将其标记为重复,因为它不是.
我有一个网站和一个Android应用程序.用户将能够扫描包含http://mywebsite.com/map/等链接的QR码.当用户尝试打开此链接时,我希望Android向他显示一个选择器对话框,他可以选择使用我的应用程序打开该链接.如果我的应用程序没有安装,它应该进入指定的网站.
我知道当用户导航到该地址时,Chrome会通过打开选择器对话框来实现此目的.例如,尝试下载Stack Exchange应用程序并在Chrome中转到此问题.它会显示:

按照上述答案中的建议后,我在AndroidManifest.xml中添加了以下代码:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="mywebsite.com"
android:path="/map"
android:scheme="http" />
<data
android:host="mywebsite.com"
android:path="/animals"
android:scheme="http" />
<data
android:host="mywebsite.com"
android:path="/articles"
android:scheme="http" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
另外,我尝试将android:mimeType ="text/plain"添加到数据中,但它没有帮助.
问题是,当我访问http://mywebsite.com/map或http://mywebsite.com/map/时, Chrome只会打开网页而不显示选择器对话框.
我想提一下:
我试过link1,link2,link3,link4,link5,link6
以下是有关DeepLinking的所有内容
我想要的是自定义uri myapp:// some_data,打开设备中安装的本机应用程序,需要some_data初始化应用程序.
有两种方案可以单击自定义URL.
1)在SMS应用程序内,当用户点击链接时,它应自动打开已安装的,否则打开应用程序托管的googleplay商店
2)从电子邮件正文中.
我已经尝试了以上列出的所有链接,但它们都不适用于我.我对方案部分有重大问题.
这是我的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="inderbagga" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
这是MainActivity.java
TextView tvText=(TextView)findViewById(R.id.tvid);
if (getIntent().getAction() == Intent.ACTION_VIEW&&getIntent().getScheme().equals("inderbagga")) {
Toast.makeText(getApplicationContext(), ""+getIntent().getScheme(), Toast.LENGTH_SHORT).show();
Uri uri = getIntent().getData();
// do stuff with uri
tvText.setText(uri.toString());
}
else …Run Code Online (Sandbox Code Playgroud) 平板电脑的内置YouTube应用程序具有共享选项.例如:我在YouTube应用中观看视频,然后点击按钮进行分享.蓝牙,Googlemail和Dropbox适合我.我想知道我怎么能在那里列出我的应用程序?哪个intent-filter有我的应用程序?我如何获得视频网址呢?任何的想法?谢谢.
我无法找到解决问题的方法.
我找到了许多自定义URL-Sheme的答案,如此(mycoolapp://somepath).
例如,这个插件添加了一个自定义URL-Sheme.
但我不想要一个自定义URL-Sheme,我想要一个像这样的"普通"Url(http://www.mycoolapp.com/somepath).
如果你在浏览器中打开它或者单击超链接,那么它会要求你打开我的应用程序(就像谷歌地图那样).
这个问题可能已经有了答案,但我找不到.
编辑:
如果您不知道我的意思,那么如果您点击Android设备上我的网站链接,那该怎么回事?

只需用我的应用程序选择.
android ×9
intentfilter ×4
browser ×2
applinks ×1
cordova ×1
deep-linking ×1
html ×1
ios ×1
java ×1
javascript ×1
share ×1
uri ×1
url-scheme ×1
video ×1
youtube ×1