Android8.0 알림 표시줄 적합 - kotlin
6455 단어 Android
이러한 통제권을 가진 후에 사용자는 더 이상 쓰레기 전송 메시지의 방해를 두려워할 필요가 없다. 왜냐하면 사용자는 자신이 어떤 알림에 관심을 가지는지, 어떤 알림에 관심을 가지지 않는지 스스로 선택할 수 있기 때문이다.구체적인 예를 들어 나는 알리페이의 수금 정보를 즉시 받을 수 있기를 바란다. 왜냐하면 나는 어떤 수익도 놓치고 싶지 않기 때문이다. 그러나 알리페이가 나에게 추천한 주변 음식을 받고 싶지 않다. 왜냐하면 나는 돈이 없어서 회사 식당만 먹을 수 있기 때문이다.이런 상황에서 알리페이는 두 가지 통지 채널을 만들 수 있다. 하나는 수지, 하나는 추천이다. 그리고 나는 사용자로서 추천 유형의 통지에 관심이 없다. 그러면 나는 직접 추천 통지 채널을 닫을 수 있다. 이렇게 하면 내가 관심을 가지는 통지에 영향을 주지 않을 뿐만 아니라 내가 무관심한 통지로 나를 방해하지 않게 할 수 있다.
다음은 예입니다.
package com.example.notificationtest
import android.annotation.TargetApi
import android.app.NotificationManager
import android.content.Context
import android.graphics.BitmapFactory
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*
import android.app.NotificationChannel
import android.app.PendingIntent
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.provider.Settings
import android.support.v4.app.NotificationCompat
import android.widget.Toast
class MainActivity : AppCompatActivity(), View.OnClickListener {
private val TAG = MainActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
send_notice.setOnClickListener(this)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {// API 26(8.0 )
// 8.0 ,
var channelId = "chat"
var channelName = " "
var importance = NotificationManager.IMPORTANCE_HIGH //
createNotificationChannel(channelId, channelName, importance)
channelId = "subscribe"
channelName = " "
importance = NotificationManager.IMPORTANCE_DEFAULT //
createNotificationChannel(channelId, channelName, importance)
}
}
@TargetApi(Build.VERSION_CODES.O)// API Build.VERSION_CODES.O(26), API
private fun createNotificationChannel(channelId: String, channelName: String, importance: Int) {
// , , , , APP , 。
val channel = NotificationChannel(channelId, channelName, importance)
channel.setShowBadge(true)//
//
channel.enableVibration(true)//
channel.vibrationPattern = longArrayOf(0, 1000, 1000, 1000, 1000, 1000, 1000, 1000)//
/* , res raw msg.wav , , ,
, , APP , 。*/
//channel.setSound(Uri.parse("android.resource://$packageName/raw/msg"),null)// ,
channel.setSound(Uri.parse("android.resource://$packageName/${R.raw.msg}"), null)//
// LED ( , )
channel.enableLights(true)// LED
channel.lightColor = Color.GREEN// LED
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.createNotificationChannel(channel)//
}
override fun onClick(v: View) {
when (v.id) {
R.id.send_notice -> sendAChatMessage()
else -> Log.d(TAG, "onClick: view id")
}
}
private fun sendAChatMessage() {
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = manager.getNotificationChannel("chat")// chat
if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
// ,
Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).run {
putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
putExtra(Settings.EXTRA_CHANNEL_ID, channel.id)
startActivity(this)
Toast.makeText(this@MainActivity, " ", Toast.LENGTH_SHORT).show()
}
}
/* ,Android 8.0 , :
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.deleteNotificationChannel(channelId)
。 Google ,
。
, , 。*/
}
//
val pendingIntent = Intent(this, NotificationActivity::class.java).run {
PendingIntent.getActivity(this@MainActivity, 0, this, 0)
}
// android8.0 , , 。
val notification = NotificationCompat.Builder(this, "chat")
.setContentTitle("Android 8.0 ")
.setStyle(// ,
NotificationCompat.BigTextStyle().bigText(
" 。 Google " +
" , 。"
)
)
.setStyle(// ,
NotificationCompat.BigPictureStyle().bigPicture(
BitmapFactory.decodeResource(
resources,
R.drawable.timg
)
)
)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher))
.setNumber(2)//
.setContentIntent(pendingIntent) // pendingIntent
.setAutoCancel(true)//
.build()
manager.notify(1, notification)
}
}
더 많은 알림 표시줄 상세 정보는 참고: 안드로이드 알림 표시줄 팁, 8.0 시스템에서 알림 표시줄 어울림https://blog.csdn.net/guolin_blog/article/details/79854070(본문의 출처)
안드로이드 알림 표시줄 팁https://blog.csdn.net/guolin_blog/article/details/50945228
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.