我正在制作一个用于健身房练习的Android应用程序,我需要通过扫描特定于锻炼的QR码来打开一个特定的练习。
如果QR码为gymassistant://
,则应用程序会打开,但我需要启动特定练习。
这是我添加到清单
的代码 <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="gymassistant"/>
</intent-filter>
QR码应该包含哪些内容以及我应该在我的Activity / Manifest中写什么才能打开特定的练习?
答案 0 :(得分:2)
根据a related content on Android Developers Site和another related topic on the same site,您应该从活动中的捆绑包中获取数据。
因此,当您注册<data android:scheme="gymassistant"/>
这样的数据时,您允许其他应用使用gymassistant这样的链接打开您的应用://
但是,它不会限制您的应用程序与URI的剩余部分。例如,您的活动也会以gymassistant://exercise1
或gymassistant://exercise2
等链接开始。
如上所述,您需要做的是阅读活动中的数据并采取相应措施。例如,下面的代码是处理它的最简单方法。我相信你会找到更好的方法:)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(...);
// Get the intent that started this activity
Intent intent = getIntent();
// Get the original QR code data
String data = intent.getData().toString();
// Extract the exercise id and use it
String dataArgs = data.replace("gymassistant://", "");
switch(dataArgs) {
case "exercise1":
//show exercise1 related view
break;
case "exercise2":
//show exercise2 related view
break;
//ETC
}
}
我希望我可以帮助你解决问题:)
答案 1 :(得分:0)
问题似乎是在扫描QR时要求打开一个应用,如果未安装该应用,请打开网页,而不是在手机中打开某些应用来扫描QR码。
您可能对名为deep linking的新功能感兴趣,如果您使用的是Apple iOS 11,则该功能会在通过手机摄像头扫描QR图像时打开已注册的应用程序,否则将打开网络浏览器以网站或重定向到应用程序商店以下载应用程序(基于QR中包含的后备设置)。
对于使用较早操作系统的用户,“打开您的QR码扫描应用程序进行扫描”。 (照常)。对于那些没有QR扫描应用程序的用户,他们需要下载一个(扫描QR码),或升级到支持与Deep Linking类似功能的设备。
这两种方法似乎都有相同的目标(通过使用数据扫描QR或由用户打开以扫描QR中的数据来打开应用)。