Aer*_*row 308
试试这个:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add respective layout
setContentView(R.layout.main_activity);
// Use package name which we want to check
boolean isAppInstalled = appInstalledOrNot("com.check.application");
if(isAppInstalled) {
//This intent will help you to launch if the package is already installed
Intent LaunchIntent = getPackageManager()
.getLaunchIntentForPackage("com.check.application");
startActivity(LaunchIntent);
Log.i("Application is already installed.");
} else {
// Do whatever we want to do if application not installed
// For example, Redirect to play store
Log.i("Application is not currently installed.");
}
}
private boolean appInstalledOrNot(String uri) {
PackageManager pm = getPackageManager();
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*nik 62
比接受的答案更清晰的解决方案(基于这个问题):
public static boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
}
catch (PackageManager.NameNotFoundException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我选择将它作为静态实用程序放在辅助类中.用法示例:
boolean whatsappFound = AndroidUtils.isAppInstalled(context, "com.whatsapp");
Run Code Online (Sandbox Code Playgroud)
此答案显示了如果缺少应用程序,如何从Play商店获取应用程序,但需要在没有Play商店的设备上进行操作.
Pri*_*sai 25
上面的代码对我不起作用.以下方法有效.
使用适当的信息创建一个Intent对象,然后使用以下函数检查Intent是否可调用:
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
Run Code Online (Sandbox Code Playgroud)
Kav*_*avi 15
如果您知道包名称,那么这可以在不使用try-catch块或迭代一堆包的情况下工作:
public static boolean isPackageInstalled(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(packageName);
if (intent == null) {
return false;
}
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return !list.isEmpty();
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*kov 14
Android 11 更新
您必须在清单中指定要搜索的确切捆绑包 ID。
Facebook 和 Whatsapp 的示例:
在“应用程序”上方的清单内(权限所在的位置)
<queries>
<package android:name="com.whatsapp" />
<package android:name="com.facebook.katana" />
</queries>
Run Code Online (Sandbox Code Playgroud)
这将允许您检查 Facebook 和 Whatsapp 是否已安装,否则您的检查结果总是错误的。
有关该主题的进一步阅读:
https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
此代码检查以确保安装了应用程序,但也检查以确保它已启用.
private boolean isAppInstalled(String packageName) {
PackageManager pm = getPackageManager();
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
return pm.getApplicationInfo(packageName, 0).enabled;
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
使用 kotlin 检查 Android 中是否安装了应用程序。
创建 kotlin 扩展。
fun PackageManager.isAppInstalled(packageName: String): Boolean = try {
getApplicationInfo(packageName, PackageManager.GET_META_DATA)
true
} catch (e: Exception) {
false
}
Run Code Online (Sandbox Code Playgroud)
现在,可以检查应用程序是否安装
if (packageManager.isAppInstalled("AppPackageName")) {
// App is installed
}else{
// App is not installed
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149083 次 |
| 最近记录: |