帮助从Android开始的意图

时间:2010-11-15 12:34:56

标签: android android-intent android-layout

我正在尝试从http://code.google.com/p/iosched/source/checkout学到一些东西。我想看看他们是如何实现他们在I / O上讨论的UI模式的。

HomeActivity 中,他们使用此代码启动 NotesActivity

/* Launch list of notes user has taken*/
public void onNotesClick(View v) {  
    startActivity(new Intent(Intent.ACTION_VIEW, Notes.CONTENT_URI));
}

Notes类位于ScheduleContract类中,它看起来像:

public static class Notes implements NotesColumns, BaseColumns {
    public static final Uri CONTENT_URI =
            BASE_CONTENT_URI.buildUpon().appendPath(PATH_NOTES).build();
    public static final Uri CONTENT_EXPORT_URI =
            CONTENT_URI.buildUpon().appendPath(PATH_EXPORT).build();

    /** {@link Sessions#SESSION_ID} that this note references. */
    public static final String SESSION_ID = "session_id";

    /** Default "ORDER BY" clause. */
    public static final String DEFAULT_SORT = NotesColumns.NOTE_TIME + " DESC";

    public static final String CONTENT_TYPE =
            "vnd.android.cursor.dir/vnd.iosched.note";
    public static final String CONTENT_ITEM_TYPE =
            "vnd.android.cursor.item/vnd.iosched.note";

    public static Uri buildNoteUri(long noteId) {
        return ContentUris.withAppendedId(CONTENT_URI, noteId);
    }

    public static long getNoteId(Uri uri) {
        return ContentUris.parseId(uri);
    }
}

我无法确定这段代码究竟是做什么的,以及它是如何在加载笔记的情况下开始 NotesActivity 的。我也不明白如何以及在新的内容中使用什么URI作为第二个参数:登记/>     意图(Intent.ACTION_VIEW,Notes.CONTENT_URI)。
我在Google上搜索了解释,但未能找到简单的例子。我猜想 Notes 类用于指向和格式化数据(注释),然后以某种方式 NotesActivity 启动,但不明白如何。

1 个答案:

答案 0 :(得分:0)

在Android中,您永远不会启动特定的应用程序,至少不能直接启动。你做的是创建一个Intentan abstract description of an operation to be performed

  

Intent为其提供便利   执行后期运行时绑定   代码之间的不同   应用。其最重要的用途   正在开展活动,   它可以被认为是胶水   活动之间。它基本上是一个   被动数据结构持有   动作的抽象描述   被执行。主要部分   意图中的信息是:

     
      
  • 行动 - 对此采取的一般行动   执行,如   ACTION_VIEWACTION_EDIT,   ACTION_MAIN

  •   
  • 数据 - 要操作的数据,   比如一个人的记录   联系人数据库,表示为   Uri

  •   

每当您想要启动另一个应用程序,发送短信,选择联系人,激活相机等,您只需创建并启动Intent,然后Android会自行确定应该启动哪个应用程序。

因此,对于Notes活动的示例:

startActivity(new Intent(Intent.ACTION_VIEW, Notes.CONTENT_URI));

第一个参数Intent.ACTION_VIEW表示此Intet将向用户显示内容。第二个参数Notes.CONTENT_URI是Notes活动的统一资源标识符(在您的示例中,如果要使用特定注释打开活动,URI还可以包含ID)。结果是为用户显示了Notes活动。

如果您需要更多信息,建议您阅读Android Application FundamentalsIntents and Intent Filters,其中详细解释了这些概念