如何以编程方式打开 Google Fit 应用程序?
How to open Google Fit app programmatically?
所以,我有一个应用程序使用 google 登录和 Google Fit api 在 be 上注册一些数据,我也想打开 Google Fit应用程序设置中的应用程序。
我已经尝试使用 Intent 打开它并传递 Google Fit 的应用程序包名称,但没有成功。
如何在用户点击时以编程方式打开它?
你好我的朋友,
第一个:
你应该使用 PackageManager class 来自 Android
第二个:
您需要启动的应用程序必须将其 FirstActivity 声明为
(意图#CATEGORY_LAUNCHER)
要么
(意图#CATEGORY_INFO)
这并不复杂,这两个类别在 ManifestFile 中声明
这是目标应用程序的清单文件示例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mkyong.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="List of Mobile OS"
android:name=".ListMobileActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="List of Fruits"
android:name=".ListFruitActivity" >
</activity>
</application>
好的,我们认为 Google Fit App 至少有一个这样的标志,所以现在通过 Packagemanger class 我们可以启动那个应用程序
科特林:
val launchIntent =
packageManager.getLaunchIntentForPackage("package-name")
if (launchIntent != null) {
startActivity(launchIntent)
} else {
Toast.makeText(
this@MainActivity,
"There is no package available in android",
Toast.LENGTH_LONG
).show()
}
Java:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("package-name");
if (launchIntent != null) {
startActivity(launchIntent);
} else {
Toast.makeText(MainActivity.this, "There is no package available in android", Toast.LENGTH_LONG).show();
}
- 包管理器和目标应用程序清单中的那两个标志是关键
所以,问题是,从android 11开始,有必要在清单中声明我们的应用程序需要交互的应用程序包名称如下(Google适合这个案例):
<queries>
<package android:name="com.google.android.apps.fitness" />
</queries>
并开始另一个 activity,如 given by @soheil
所以,我有一个应用程序使用 google 登录和 Google Fit api 在 be 上注册一些数据,我也想打开 Google Fit应用程序设置中的应用程序。
我已经尝试使用 Intent 打开它并传递 Google Fit 的应用程序包名称,但没有成功。
如何在用户点击时以编程方式打开它?
你好我的朋友,
第一个: 你应该使用 PackageManager class 来自 Android
第二个:
您需要启动的应用程序必须将其 FirstActivity 声明为 (意图#CATEGORY_LAUNCHER) 要么 (意图#CATEGORY_INFO) 这并不复杂,这两个类别在 ManifestFile 中声明 这是目标应用程序的清单文件示例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mkyong.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="List of Mobile OS"
android:name=".ListMobileActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="List of Fruits"
android:name=".ListFruitActivity" >
</activity>
</application>
好的,我们认为 Google Fit App 至少有一个这样的标志,所以现在通过 Packagemanger class 我们可以启动那个应用程序
科特林:
val launchIntent =
packageManager.getLaunchIntentForPackage("package-name")
if (launchIntent != null) {
startActivity(launchIntent)
} else {
Toast.makeText(
this@MainActivity,
"There is no package available in android",
Toast.LENGTH_LONG
).show()
}
Java:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("package-name");
if (launchIntent != null) {
startActivity(launchIntent);
} else {
Toast.makeText(MainActivity.this, "There is no package available in android", Toast.LENGTH_LONG).show();
}
- 包管理器和目标应用程序清单中的那两个标志是关键
所以,问题是,从android 11开始,有必要在清单中声明我们的应用程序需要交互的应用程序包名称如下(Google适合这个案例):
<queries>
<package android:name="com.google.android.apps.fitness" />
</queries>
并开始另一个 activity,如