簡體   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