【问题标题】:Open my application from Calendar从日历打开我的应用程序
【发布时间】:2024-01-16 10:26:02
【问题描述】:

我正在尝试使用 CUSTOM_APP_URI 从日历事件中打开我的 Android 应用程序。

  1. 所以我通过我的应用程序向日历插入了一个事件。
  2. 打开日历应用程序,并导航到事件详细信息。
  3. 单击事件 URI,我的应用程序应从日历事件详细信息页面打开。

这是我用于将事件插入日历的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Calendar beginCal = Calendar.getInstance();
    beginCal.set(2015, 11, 10, 4, 30);
    long startTime = beginCal.getTimeInMillis();

    Calendar endCal = Calendar.getInstance();
    endCal.set(2015, 11, 10, 4, 30);
    long endTime = endCal.getTimeInMillis();

    ContentValues values = new ContentValues();
    values.put(CalendarContract.Events.CALENDAR_ID, 1);
    values.put(CalendarContract.Events.TITLE, "Check Demo Calendar4");
    values.put(CalendarContract.Events.DTSTART, startTime);
    values.put(CalendarContract.Events.DTEND, endTime);
    values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

    values.put(CalendarContract.Events.CUSTOM_APP_PACKAGE, getPackageName());
    values.put(CalendarContract.Events.CUSTOM_APP_URI, "calendar://1");

    getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);

}

日历完美显示,但问题是即使在插入事件之后,我的日历事件的详细信息页面中也没有显示 URI。 使用 CUSTOM_APP_URI 插入通风口有什么问题?有什么帮助吗?

【问题讨论】:

  • 谁能帮我解决这个问题?
  • 嗨@Ravi 你解决了吗?因为我遇到了同样的问题
  • 面临同样的问题似乎是死路一条
  • 我也有这个问题。有什么解决方案吗?

标签: android android-calendar


【解决方案1】:

并非所有日历应用都支持CUSTOM_APP_PACKAGE 字段。据我所知,只有以下日历应用具有该功能:

  • AOSP 日历应用程序
  • 谷歌日历
  • 日历
  • CalenGoo

上次查看,三星的日历应用和HTC的日历应用都不支持。

如果有人知道其他支持CUSTOM_APP_PACKAGE 的日历应用,请添加。

另外,请确保您的AndroidManifest.xml 包含正确的intent-filter,请参阅ACTION_HANDLE_CUSTOM_EVENT

【讨论】:

    【解决方案2】:

    试试这个代码,希望对你有帮助:

    Intent launchIntent = getPackageManager().getLaunchIntentForPackage("your_activtiy_package_name");
    startActivity(launchIntent);
    

    【讨论】:

    • 我没有得到。这将如何工作。这段代码用于开始我的活动。但是这段代码在哪里写呢?
    • 此代码将打开您的应用程序,您必须在要打开应用程序的位置编写此代码。
    • 我想从设备的内置日历应用程序中打开我的应用程序。我怎么能在那里写这段代码? :)