谁能指导我如何从android浏览器启动我的android应用程序?
当前回答
Xamarin port对菲利克斯的回答
在MainActivity中添加这个(docs: Android.App.IntentFilterAttribute Class):
....
[IntentFilter(new[] {
Intent.ActionView },
Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
DataScheme = "my.special.scheme")
]
public class MainActivity : Activity
{
....
Xamarin将为你在AndroidManifest.xml中添加以下内容:
<activity
android:label="Something"
android:screenOrientation="portrait"
android:theme="@style/MyTheme"
android:name="blah.MainActivity">
<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="my.special.scheme" />
</intent-filter>
</activity>
为了获得参数(我在MainActivity的OnCreate中测试):
var data = Intent.Data;
if (data != null)
{
var scheme = data.Scheme;
var host = data.Host;
var args = data.PathSegments;
if (args.Count > 0)
{
var first = args[0];
var second = args[1];
...
}
}
据我所知,以上内容可以添加到任何活动中,不仅仅是MainActivity
注:
当用户点击链接,Android操作系统重新启动你的应用程序(杀死前实例,如果有,并运行新的一个),意味着应用程序的MainLauncher活动的OnCreate事件将再次被触发。 这个链接:<a href="my.special. "方案://host/arg1/arg2">,在上面最后的代码段的值将是:
scheme: my.special.scheme
host: host
args: ["arg1", "arg2"]
first: arg1
second: arg2
更新:如果android创建你的应用程序的新实例,你应该添加android:launchMode="singleTask"太。
其他回答
还应该有<category android:name="android.intent.category. browsable "/>添加到intent过滤器中,以便从链接中正确识别活动。
Xamarin port对菲利克斯的回答
在MainActivity中添加这个(docs: Android.App.IntentFilterAttribute Class):
....
[IntentFilter(new[] {
Intent.ActionView },
Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
DataScheme = "my.special.scheme")
]
public class MainActivity : Activity
{
....
Xamarin将为你在AndroidManifest.xml中添加以下内容:
<activity
android:label="Something"
android:screenOrientation="portrait"
android:theme="@style/MyTheme"
android:name="blah.MainActivity">
<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="my.special.scheme" />
</intent-filter>
</activity>
为了获得参数(我在MainActivity的OnCreate中测试):
var data = Intent.Data;
if (data != null)
{
var scheme = data.Scheme;
var host = data.Host;
var args = data.PathSegments;
if (args.Count > 0)
{
var first = args[0];
var second = args[1];
...
}
}
据我所知,以上内容可以添加到任何活动中,不仅仅是MainActivity
注:
当用户点击链接,Android操作系统重新启动你的应用程序(杀死前实例,如果有,并运行新的一个),意味着应用程序的MainLauncher活动的OnCreate事件将再次被触发。 这个链接:<a href="my.special. "方案://host/arg1/arg2">,在上面最后的代码段的值将是:
scheme: my.special.scheme
host: host
args: ["arg1", "arg2"]
first: arg1
second: arg2
更新:如果android创建你的应用程序的新实例,你应该添加android:launchMode="singleTask"太。
看这里@JRuns的答案。这个想法是用您的自定义方案创建html,并将其上传到某个地方。然后,如果你点击你的html文件上的自定义链接,你将被重定向到你的应用程序。但是不要忘记设置全名name = "MyApp.Mobile.Droid. "MainActivity”属性到你的目标活动。
example.php:
<?php
if(!isset($_GET['app_link'])){ ?>
<iframe src="example.php?app_link=YourApp://blabla" style="display:none;" scrolling="no" frameborder="0"></iframe>
<iframe src="example.php?full_link=http://play.google.com/xyz" style="display:none;" scrolling="no" frameborder="0"></iframe>
<?php
}
else { ?>
<script type="text/javascript">
self.window.location = '<?php echo $_GET['app_link'];?>';
window.parent.location.href = '<?php echo $_GET['full_link'];?>';
</script>
<?php
}
是的,Chrome搜索而不是寻找方案。如果你想通过URI方案启动你的应用程序,使用Play商店上的这个很酷的实用程序。它拯救了我的一天:) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件