【发布时间】:2018-04-19 17:34:49
【问题描述】:
我在手机上安装了一个应用程序“Master”。是否可以从其他应用“Slave”作为即时应用访问资源?
我知道在 2 个已安装的应用程序之间可以使用:
Resources resources = getPackageManager().getResourcesForApplication(packageName);
String slaveAppName = resources.getString(resources.getIdentifier("app_name", "string", packageName));
谢谢
L.E:
我还尝试使用以下方式将数据从即时应用程序发送到已安装的应用程序(从上面反向):
Intent intent = new Intent("com.test.MainActivity");
intent.putExtra("data","data string");
startActivity(intent);
在我在 AndroidManifest 中安装的应用程序上:
<intent-filter>
<action android:name="com.text.MainActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
当我尝试将数据作为已安装的应用程序发送时一切都很好......但是一旦我构建了即时应用程序......它就会崩溃:
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.text.MainActivity (has extras) }
L.E (2)
我也尝试使用即时应用程序构建来测试手机上安装了多少应用程序:
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> pkgAppsList =
this.getPackageManager().queryIntentActivities( mainIntent, 0);
Log.d("log","installed apps : "+pkgAppsList.size());
这是一项测试,旨在确定即时应用构建是否可以“触摸”本地电话设置。它有效
【问题讨论】:
-
您可以添加任何详细信息,例如:使用的代码,遇到的错误问题吗? How do I ask a good question?, How to create a Minimal, Complete, and Verifiable example 向社区展示你的尝试。
-
我确实像之前的示例一样尝试过。当两个应用程序都安装在手机上时,这种方式有效。但是安装了一个应用程序......让我们称其为“主”,而其他名为“从属”的即时应用程序使用上面的代码不起作用。使用应用程序包名称未找到“从属”应用程序。
-
使用 Launcher API,您可以检查设备 developers.google.com/android/reference/com/google/android/gms/… 上是否提供即时应用程序。如果 URL developers.google.com/android/reference/com/google/android/gms/… 存在,您可以使用 LaunchData API 从即时应用获取元数据。参考代码 sn-p stackoverflow.com/a/49703031/8320998
标签: java android android-resources android-instant-apps