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

时间:2014-08-21 17:41:04

标签: android android-intent calendar

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

日历意图如下:

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);

3 个答案:

答案 0 :(得分:3)

Android Compatibility Definition Document的第3.2.3.1节中,它说

  

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

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

  • 台钟
  • 浏览器
  • 日历
  • 联系人
  • GlobalSearch
  • 启动
  • 音乐
  • 设置

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

如何检查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;
    }
}

例如,如果应用程序存在,则启动意图:

   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! :( ");
    }