繁体   English   中英

如何检查android中是否安装了日历应用程序?

[英]How to check if calendar app installed in android?

我已经为我的应用添加了一些按钮,以便为日历事件创建意图。 但我认为最好检查用户是否有任何日历应用程序。 我怎么能这样做?

日历意图如下所示:

Intent calIntent = new Intent(Intent.ACTION_INSERT);
calIntent.setType("vnd.android.cursor.item/event");   
calIntent.putExtra(Events.TITLE, "My House Party");
calIntent.putExtra(Events.EVENT_LOCATION, "My Beach House");
calIntent.putExtra(Events.DESCRIPTION, "A Pig Roast on the Beach");

GregorianCalendar calDate = new GregorianCalendar(2012, 7, 15);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
     calDate.getTimeInMillis());
calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
     calDate.getTimeInMillis());

startActivity(calIntent);

它说,在Android兼容性定义文档的第3.2.3.1节中

Android上游项目定义了许多核心应用程序,例如联系人, 日历 ,照片库,音乐播放器等。 设备实现者可以用替代版本替换这些应用程序。 但是,任何此类替代版本都必须遵循上游项目提供的相同Intent模式。 例如,如果设备包含备用音乐播放器,则该设备仍必须遵守第三方应用程序发出的Intent模式以选择歌曲。

该文档继续列出了所有核心应用程序:

  • 台钟
  • 浏览器
  • 日历
  • 往来
  • 画廊
  • GlobalSearch
  • 发射台
  • 音乐
  • 设置

基本上,这意味着所有装有Google Play商店的设备都将安装符合标准意图模式的日历应用程序(以及上面列出的所有应用程序)。 因此,您根本不需要检查。

正如MusicMaster所说,所有Android设备都应具有日历应用程序。 但是,如果您的意图是您不确定是否会受到任何活动的影响,您可以使用您的意图查询包管理器,以查看是否有任何活动能够响应它。 像这样:

    PackageManager pm = getPackageManager();
    List<ResolveInfo> activities = pm.queryIntentActivities(yourIntent, 0);

如果activities大小大于零,则用户拥有可以响应您的意图的应用程序。

如何检查Android中是否安装了应用程序?

这是我的方法:

public static boolean isPackageInstalled(String packagename, Context context) {
    PackageManager pm = context.getPackageManager();
    try {
        pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (NameNotFoundException e) {
        return false;
    }
}

例如,如果应用程序存在,则启动一个intent:

   if(isPackageInstalled("com.android.calendar", getApplicationContext())){
        Intent i = new Intent();
        PackageManager manager = getPackageManager();
        i = manager.getLaunchIntentForPackage(packageName);
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        startActivity(i);
    }else{
        Log.i("myApp", "Application NOT Installed! :( ");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM