【问题标题】:How to create an event in AWS pinpoint which can be triggered by OnClick event in Android Kotlin如何在 AWS pinpoint 中创建可由 Android Kotlin 中的 OnClick 事件触发的事件
【发布时间】:2021-05-31 09:15:12
【问题描述】:

当我尝试在 AWS Pinpoint 中创建将在 OnClickListerner 上触发的事件时,我正尝试在我的项目中实施 AWS Pinpoint 以进行移动分析。以下是代码sn-p。每当我尝试在 OnClickListener 中创建事件时,该特定事件无法识别,请帮助我了解它是如何完成的。

inviteButton.setOnClickListener {
                    val tinyDb = TinyDB(App.ctx)

                    val userDetails = tinyDb.getCurrentUserCachedDetails()
                    val userAttributesMap = userDetails.attributes.attributes
                    val username =
                            userAttributesMap[SettingsFragment.KEY_FIRST_NAME] + " " + userAttributesMap[SettingsFragment.KEY_LAST_NAME]
                    val project = ProjectRepository(ProjectDao()).getProjectById(projectCode)
                    val bitmap =
                            BitmapFactory.decodeResource(resources, R.drawable.project_invite)
                    val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true)
                    val canvas = Canvas(mutableBitmap)
                    val scale = resources.displayMetrics.density
                    val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
                        color = Color.BLACK
                        textSize = 100 * scale
                    }
                    canvas.drawText(
                            projectCode.toString(),
                            400.toFloat() * scale,
                            440.toFloat() * scale,
                            paint
                    )

                    val originalFile = File(App.ctx.externalMediaDirs[0], "project_invite.png")
                    originalFile.createNewFile()
                    val originalFileBos = ByteArrayOutputStream()
                    mutableBitmap.compress(Bitmap.CompressFormat.PNG, 0, originalFileBos)
                    val originalFileByteArray = originalFileBos.toByteArray()
                    val originalFileFos = FileOutputStream(originalFile)
                    originalFileFos.write(originalFileByteArray)
                    originalFileFos.flush()
                    originalFileFos.close()

                    val defaultSmsApp = Telephony.Sms.getDefaultSmsPackage(App.ctx)

                    val intent = Intent(Intent.ACTION_SEND)
                    intent.putExtra(
                            Intent.EXTRA_STREAM,
                            FileProvider.getUriForFile(
                                    App.ctx,
                                    "${App.ctx.packageName}.fileprovider",
                                    originalFile
                            )
                    )
                    intent.putExtra(Intent.EXTRA_TEXT, message)
                    intent.putExtra("sms_body", message)
                    intent.type = "image/png"
                    defaultSmsApp?.let {
                        intent.`package` = it
                        try {
                            activity?.startActivity(intent)
                        } catch (e: ActivityNotFoundException) {
                            e { e }
                            toastError("Unable to open SMS app.")
                        }
                    } ?: toastError("No default SMS app found.")


                    val Email = tinyDb.getString(getString(R.string.logged_in_user))
                    val event = AnalyticsEvent.builder()
                            .name("invites")
                            .addProperty("email", Email)
                            .build()

                    log { "Invite event"+ event }
                    Amplify.Analytics.recordEvent(event)
                    log { "Invite here 11"+ Amplify.Analytics.recordEvent(event) }

                }

【问题讨论】:

  • 你能解释一下你所说的“那个特定事件未被识别”是什么意思吗?您是否看到了特定的错误?哪一行代码没有按预期工作?您能否通过 logcat 输出确认单击按钮时调用了 Amplify.Analytics.recordEvent(...)

标签: android kotlin aws-amplify mobile-development aws-pinpoint


【解决方案1】:
inviteButton.setOnClickListener {
                    val tinyDb = TinyDB(App.ctx)

                    val userDetails = tinyDb.getCurrentUserCachedDetails()
                    val userAttributesMap = userDetails.attributes.attributes
                    val username =
                            userAttributesMap[SettingsFragment.KEY_FIRST_NAME] + " " + userAttributesMap[SettingsFragment.KEY_LAST_NAME]

 val Email = tinyDb.getString(getString(R.string.logged_in_user))
                    val event = AnalyticsEvent.builder()
                            .name("invites")
                            .addProperty("email", Email)
                            .build()

                    log { "Invite event"+ event }
                    Amplify.Analytics.recordEvent(event)
                    log { "Invite here 11"+ Amplify.Analytics.recordEvent(event) }
                    val project = ProjectRepository(ProjectDao()).getProjectById(projectCode)
                    val bitmap =
                            BitmapFactory.decodeResource(resources, R.drawable.project_invite)
                    val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true)
                    val canvas = Canvas(mutableBitmap)
                    val scale = resources.displayMetrics.density
                    val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
                        color = Color.BLACK
                        textSize = 100 * scale
                    }
                    canvas.drawText(
                            projectCode.toString(),
                            400.toFloat() * scale,
                            440.toFloat() * scale,
                            paint
                    )

                    val originalFile = File(App.ctx.externalMediaDirs[0], "project_invite.png")
                    originalFile.createNewFile()
                    val originalFileBos = ByteArrayOutputStream()
                    mutableBitmap.compress(Bitmap.CompressFormat.PNG, 0, originalFileBos)
                    val originalFileByteArray = originalFileBos.toByteArray()
                    val originalFileFos = FileOutputStream(originalFile)
                    originalFileFos.write(originalFileByteArray)
                    originalFileFos.flush()
                    originalFileFos.close()

                    val defaultSmsApp = Telephony.Sms.getDefaultSmsPackage(App.ctx)

                    val intent = Intent(Intent.ACTION_SEND)
                    intent.putExtra(
                            Intent.EXTRA_STREAM,
                            FileProvider.getUriForFile(
                                    App.ctx,
                                    "${App.ctx.packageName}.fileprovider",
                                    originalFile
                            )
                    )
                    intent.putExtra(Intent.EXTRA_TEXT, message)
                    intent.putExtra("sms_body", message)
                    intent.type = "image/png"
                    defaultSmsApp?.let {
                        intent.`package` = it
                        try {
                            activity?.startActivity(intent)
                        } catch (e: ActivityNotFoundException) {
                            e { e }
                            toastError("Unable to open SMS app.")
                        }
                    } ?: toastError("No default SMS app found.")
                }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    相关资源
    最近更新 更多