Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个可安装的应用程序启动即时应用程序_Java_Android_Deep Linking_Android Instant Apps - Fatal编程技术网

Java 从另一个可安装的应用程序启动即时应用程序

Java 从另一个可安装的应用程序启动即时应用程序,java,android,deep-linking,android-instant-apps,Java,Android,Deep Linking,Android Instant Apps,我需要从我拥有的另一个可安装应用程序启动即时应用程序。这是一个可以启动其他即时应用程序的同步应用程序。我已经在google play上发布了我的即时应用程序,它正在通过我在这里做的测试 我的deeplink配置为: My AssetLink.json: 即时应用程序包名称: com.lapic.thomas.puzzle 我尝试按如下方式运行它: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://puzzlei

我需要从我拥有的另一个可安装应用程序启动即时应用程序。这是一个可以启动其他即时应用程序的同步应用程序。我已经在google play上发布了我的即时应用程序,它正在通过我在这里做的测试

我的deeplink配置为:

My AssetLink.json:

即时应用程序包名称: com.lapic.thomas.puzzle

我尝试按如下方式运行它:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://puzzleinstantapp.firebaseapp.com/main"));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setPackage(getPackageName());
startActivity(intent);
但它给出了一个错误:

04-06 16:57:23.747 30233-30233/com.example.thomas.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.thomas.myapplication, PID: 30233
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thomas.myapplication/com.example.thomas.myapplication.MainActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://puzzleinstantapp.firebaseapp.com/... pkg=com.lapic.thomas.puzzle }
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
    at android.app.ActivityThread.access$900(ActivityThread.java:154)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:234)
    at android.app.ActivityThread.main(ActivityThread.java:5526)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://puzzleinstantapp.firebaseapp.com/... pkg=com.lapic.thomas.puzzle }
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1514)
    at android.app.Activity.startActivityForResult(Activity.java:3963)
    at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
    at android.app.Activity.startActivityForResult(Activity.java:3924)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
    at android.app.Activity.startActivity(Activity.java:4247)
    at android.app.Activity.startActivity(Activity.java:4215)
    at com.example.thomas.myapplication.MainActivity.onCreate(MainActivity.java:17)
    at android.app.Activity.performCreate(Activity.java:6285)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
我忘了做点什么了吗? 当我直接从google play运行即时应用程序时,它工作正常。 有人知道我如何从我安装的其他应用程序的呼叫启动即时应用程序吗


谢谢。

由于代码段中的
setPackage()
而失败。只需发送给定URL的查看+可浏览意图,如果此设备上有即时应用程序,它将启动即时应用程序(否则将返回浏览器)

若您想保证即时应用程序将启动,您可以使用此API首先检查设备上是否有即时应用程序可用

这将解决即时应用程序无法在设备上运行的情况,因为操作系统太旧,或者用户选择退出,或者给定国家/地区的intant应用程序不可用

您还可以在启动即时应用程序之前使用它获取有关即时应用程序的元数据(如图标或标题)

InstantAppIntentData intentData=InstantApps
.getLauncher(MainActivity.this)
.getInstantAppIntentData(“https://vimeo.com/148943792“,空);
int matchResult=intentData.getMatchResult();
if(matchResult==RESULT\u LAUNCH\u OK){
Log.i(标签,“启动即时:+intentData.getPackageName());
startActivity(intentData.getIntent());
}否则{
Log.i(标记“匹配结果:+matchResult”);
}
InstantApps
.getLauncher(MainActivity.this)
.GetInstantPaunchData(“https://vimeo.com/148943792")
.addOnCompleteListener(任务->{
if(task.issusccessful()){
LaunchData data=task.getResult();
Intent launchIntent=data.getIntent();
if(launchIntent!=null){
Log.i(标记,“应用程序标签:+data.getApplicationLabel());
Log.i(标记“Package:+data.getPackageName());
Log.i(标记“图标宽度:”+data.getApplicationCon().getWidth());
startActivity(launchIntent);
}否则{
Log.i(标记“未找到即时应用”);
}
}否则{
Log.i(标记“Error:+task.getException());
}
});

好极了,我按照您的提示删除了PackageName,使它在这里工作,但尽管我理解​​使用api,我无法在可安装的应用程序中激活它。我查阅了文档,但找不到如何使api能够使用InstantApps和InstantAppIntentData类。但感谢您的帮助:)。要访问这些,您需要将
com.google.android.gms:play services instantapps
添加到您的依赖项中