从ContentProvider启动活动

时间:2012-07-11 03:09:01

标签: android android-activity android-contentprovider

我有一个内容提供商,提供来自用户帐户的数据。如果用户没有登录,我想在应用程序请求来自内容提供商的数据时显示登录对话框。可能吗?或者我这样做是错的?我想另一种解决方案是抛出异常或从内容提供者返回错误指示数据,让应用程序处理它,但我觉得第一个解决方案是最好的,因为应用程序不必担心用户登录或登录所需的用户界面。

2 个答案:

答案 0 :(得分:0)

思考服务。但是,通常不建议从服务开始活动,因此可能不是内容提供者。然而,问题中最令人困惑的部分是“应用程序请求来自内容提供商的数据”。此内容提供商是否可用于多个Android应用程序?

答案 1 :(得分:0)

class Provider : ContentProvider() {
    override fun onCreate() = true

    override fun query(
        uri: Uri,
        projection: Array<String>,
        selection: String?,
        selectionArgs: Array<String>?,
        sortOrder: String?
    ): Cursor? {
        context.startActivity(Intent(context, MainActivity::class.java)
            .apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK })
        return null
    }

    override fun getType(uri: Uri) = null

    override fun insert(uri: Uri, values: ContentValues) = null

    override fun delete(uri: Uri, selection: String, selectionArgs: Array<String>) = 0

    override fun update(
        uri: Uri,
        values: ContentValues?,
        selection: String?,
        selectionArgs: Array<String>?
    ) = 0
}