即时应用程序仅限于发现设备上已安装应用的列表,除非 安装的应用程序已经让自己可以被即时应用程序发现。
还有a way可以让我们的应用程序可以被即时应用程序发现。
但是当我们使用getPackageManager()
时,代码会与
错误=很遗憾,TheAppName即时应用已停止。
Logcat中没有打印任何内容。以下内容打印在Debug控制台上,
02/10 22:57:27: Launching instantapp
Side loading instant app.
Side loading instant app.
Launching deeplink: https://myapp.mycompany.com/example.
$ adb shell setprop log.tag.AppIndexApi VERBOSE
$ adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d https://myapp.mycompany.com/example -n "com.google.android.instantapps.supervisor/.UrlHandler"
Waiting for application to come online: com.mycompany.myapp.instantappscanner.test | com.mycompany.myapp.instantappscanner
Waiting for application to come online: com.mycompany.myapp.instantappscanner.test | com.mycompany.myapp.instantappscanner
Waiting for application to come online: com.mycompany.myapp.instantappscanner.test | com.mycompany.myapp.instantappscanner
Could not connect to remote process. Aborting debug session.
代码:
PackageManager packageManager = getPackageManager();
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
}
Android版本:6.0.1
更新
不打印日志的原因是debugger was not attached to the App。来自adb控制台的日志显示:
02-11 21:06:56.347: E/AndroidRuntime(18033): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mycompany.myapp.aninstantapp/com.mycompany.myapp.aninstantapp.feature.MainActivity}: java.lang.SecurityException: Method class android.content.pm.IPackageManager$Stub$Proxy.getInstalledApplications[int, int] not available to instant apps
堆栈跟踪打印出即时应用程序不允许调用,但是如果很少有应用程序自己discoverable to instant apps怎么办?而不是抛出异常方法调用应返回仅包含应用程序的部分应用程序列表,这些应用程序使自己可以被即时应用程序发现?
需要帮助从即时应用程序执行以下代码。
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
抛出异常,
SecurityException: IPackageManager$Stub$Proxy.getInstalledApplications[int, int] not available to instant apps
它不应该引发异常,因为文档支持(如上所述)可以让很少的应用程序能够让自己被即时应用程序发现。
答案 0 :(得分:2)
使用参考即时应用文档3.15. Instant Apps 设备实现必须满足以下要求:
android:visibleToInstantApps
使即时应用可见,并且支持来自 Android 8.0
如果我们必须从 isInstantApp
installed app
>
如果来电者能够看到即时应用, isInstantApp(packageName)
将返回有效值(false
)。调用者可以在以下场景中看到即时应用程序:
ACCESS_INSTANT_APPS
VIEW_INSTANT_APPS
即时通讯应用程序 app已建立与暴露组件的连接[例如。界 服务,开展活动等...... ]