[{"data":1,"prerenderedAt":1041},["ShallowReactive",2],{"\u002Fandroid\u002Fandroid_sdk\u002Fnotification":3},{"id":4,"title":5,"body":6,"date":1033,"description":320,"draft":1034,"extension":1035,"meta":1036,"navigation":493,"path":1037,"seo":1038,"stem":1039,"__hash__":1040},"blog\u002F01.android\u002F03.android_SDK\u002F10.notification.md","通知チャンネルを作成し、通知領域に通知を表示する",{"type":7,"value":8,"toc":1016},"minimark",[9,13,17,21,24,47,51,57,64,106,110,122,193,198,208,253,257,264,280,283,287,294,318,321,324,327,341,345,355,382,386,393,672,676,686,689,693,706,885,888,891,894,897,900,903,954,964,984,987,1012],[10,11,12],"h1",{"id":12},"通知チャンネルを作成する",[14,15,16],"p",{},"Android 8.0（Oreo \u002F APIレベル26）以降、アプリから通知領域に通知を表示するためには、\nその通知に対応する「通知チャンネル」をあらかじめ作成しておく必要があります。\n通知チャンネルごとに重要度や音、バイブレーションの設定を管理することで、\nユーザーがチャンネル単位で通知の挙動をカスタマイズできるようになります。",[18,19,20],"h2",{"id":20},"通知チャンネル作成の手順",[14,22,23],{},"通知チャンネルは、以下の3つのステップで作成します。",[25,26,27,39,42],"ol",{},[28,29,30,34,35,38],"li",{},[31,32,33],"code",{},"NotificationManager","（または ",[31,36,37],{},"NotificationManagerCompat","）のインスタンスを取得する。",[28,40,41],{},"通知チャンネルのインスタンスを生成する。",[28,43,44,46],{},[31,45,33],{}," に通知チャンネルの作成を登録する。",[18,48,50],{"id":49},"_1-notificationmanagerのインスタンスを取得","1. NotificationManagerのインスタンスを取得",[14,52,53,54,56],{},"通知の管理を担うインスタンスを取得します。\nJetpackライブラリ（androidx）では ",[31,55,37],{}," という互換クラスが提供されています。このクラスを利用することで、AndroidのOSバージョンを意識することなく安全に通知処理を実装できます。",[14,58,59,60,63],{},"インスタンスの取得は、以下のようにコンテキスト（",[31,61,62],{},"Context","）を渡して行います。",[65,66,71],"pre",{"className":67,"code":68,"language":69,"meta":70,"style":70},"language-kotlin shiki shiki-themes github-light","val manager = NotificationManagerCompat.from(this)\n\n","kotlin","",[31,72,73],{"__ignoreMap":70},[74,75,78,82,86,89,92,96,99,103],"span",{"class":76,"line":77},"line",1,[74,79,81],{"class":80},"sD7c4","val",[74,83,85],{"class":84},"sgsFI"," manager ",[74,87,88],{"class":80},"=",[74,90,91],{"class":84}," NotificationManagerCompat.",[74,93,95],{"class":94},"s7eDp","from",[74,97,98],{"class":84},"(",[74,100,102],{"class":101},"sYu0t","this",[74,104,105],{"class":84},")\n",[18,107,109],{"id":108},"_2-通知チャンネルインスタンスを生成","2. 通知チャンネルインスタンスを生成",[14,111,112,113,117,118,121],{},"作成する通知チャンネルの設定を定義します。\n最小限の構成として、",[114,115,116],"strong",{},"チャンネルID","、",[114,119,120],{},"重要度（Importance）","、ユーザーに表示されるチャンネル名（Name）が必要です。",[65,123,125],{"className":67,"code":124,"language":69,"meta":70,"style":70},"val channel = NotificationChannelCompat.Builder(\"id\", NotificationManagerCompat.IMPORTANCE_DEFAULT)\n    .setName(\"ChannelName\")\n    .setDescription(\"ChannelDescription\")\n    .build()\n\n",[31,126,127,151,167,182],{"__ignoreMap":70},[74,128,129,131,134,136,139,142,144,148],{"class":76,"line":77},[74,130,81],{"class":80},[74,132,133],{"class":84}," channel ",[74,135,88],{"class":80},[74,137,138],{"class":84}," NotificationChannelCompat.",[74,140,141],{"class":94},"Builder",[74,143,98],{"class":84},[74,145,147],{"class":146},"sYBdl","\"id\"",[74,149,150],{"class":84},", NotificationManagerCompat.IMPORTANCE_DEFAULT)\n",[74,152,154,157,160,162,165],{"class":76,"line":153},2,[74,155,156],{"class":84},"    .",[74,158,159],{"class":94},"setName",[74,161,98],{"class":84},[74,163,164],{"class":146},"\"ChannelName\"",[74,166,105],{"class":84},[74,168,170,172,175,177,180],{"class":76,"line":169},3,[74,171,156],{"class":84},[74,173,174],{"class":94},"setDescription",[74,176,98],{"class":84},[74,178,179],{"class":146},"\"ChannelDescription\"",[74,181,105],{"class":84},[74,183,185,187,190],{"class":76,"line":184},4,[74,186,156],{"class":84},[74,188,189],{"class":94},"build",[74,191,192],{"class":84},"()\n",[194,195,197],"h3",{"id":196},"重要度importanceの定義","重要度（Importance）の定義",[14,199,200,201,204,205,207],{},"実装時に重要となる",[31,202,203],{},"Importance"," は、\n",[31,206,37],{}," に定義されている定数を参照して設定します。主に以下のレベルが用意されています。",[209,210,211,217,223,229,235,241,247],"ul",{},[28,212,213,216],{},[31,214,215],{},"NotificationManagerCompat.IMPORTANCE_MAX"," （最高レベルの重要度）",[28,218,219,222],{},[31,220,221],{},"NotificationManagerCompat.IMPORTANCE_HIGH"," （音を鳴らし、画面にヘッドアップ通知を表示）",[28,224,225,228],{},[31,226,227],{},"NotificationManagerCompat.IMPORTANCE_DEFAULT"," （音を鳴らす）",[28,230,231,234],{},[31,232,233],{},"NotificationManagerCompat.IMPORTANCE_LOW"," （音を鳴らさない）",[28,236,237,240],{},[31,238,239],{},"NotificationManagerCompat.IMPORTANCE_MIN"," （音を鳴らさず、ステータスバーにも表示しない）",[28,242,243,246],{},[31,244,245],{},"NotificationManagerCompat.IMPORTANCE_NONE"," （通知をブロック）",[28,248,249,252],{},[31,250,251],{},"NotificationManagerCompat.IMPORTANCE_UNSPECIFIED"," （重要度未設定）",[18,254,256],{"id":255},"_3-notificationmanagerに通知チャンネルの作成を依頼","3. NotificationManagerに通知チャンネルの作成を依頼",[14,258,259,260,263],{},"最後に、生成した通知チャンネルのオブジェクトを ",[31,261,262],{},"NotificationManagerCompat#createNotificationChannel()"," に渡すことで、\nシステムにチャンネルを登録します。",[65,265,267],{"className":67,"code":266,"language":69,"meta":70,"style":70},"manager.createNotificationChannel(channel)\n\n",[31,268,269],{"__ignoreMap":70},[74,270,271,274,277],{"class":76,"line":77},[74,272,273],{"class":84},"manager.",[74,275,276],{"class":94},"createNotificationChannel",[74,278,279],{"class":84},"(channel)\n",[14,281,282],{},"すでに同一のチャンネルIDで作成されている場合は、設定の更新、あるいは処理が無視されるため、アプリの起動時などに毎回呼び出しても安全です。",[18,284,286],{"id":285},"おまけ通知チャンネルを削除する方法","おまけ：通知チャンネルを削除する方法",[14,288,289,290,293],{},"作成した通知チャンネルが不要になった場合は、",[31,291,292],{},"NotificationManagerCompat#deleteNotificationChannel(channelId)"," を呼び出すことで削除を依頼できます。",[65,295,297],{"className":67,"code":296,"language":69,"meta":70,"style":70},"\u002F\u002F 引数には作成時に指定した「チャンネルID」の文字列を渡します\nmanager.deleteNotificationChannel(\"id\")\n\n",[31,298,299,305],{"__ignoreMap":70},[74,300,301],{"class":76,"line":77},[74,302,304],{"class":303},"sAwPA","\u002F\u002F 引数には作成時に指定した「チャンネルID」の文字列を渡します\n",[74,306,307,309,312,314,316],{"class":76,"line":153},[74,308,273],{"class":84},[74,310,311],{"class":94},"deleteNotificationChannel",[74,313,98],{"class":84},[74,315,147],{"class":146},[74,317,105],{"class":84},[10,319,320],{"id":320},"通知領域に通知を表示する",[14,322,323],{},"通知チャンネルの作成が完了したら、次は実際に通知を構築して表示する処理を実装します。\nAndroid 13（APIレベル33）以降、通知の表示にはユーザーからの明示的な権限許諾が必要になったため、\nパーミッションの要求処理も含めて解説します。",[18,325,326],{"id":326},"通知を表示する実装の流れ",[25,328,329,335,338],{},[28,330,331,334],{},[31,332,333],{},"AndroidManifest.xml"," へパーミッションの追加",[28,336,337],{},"通知表示の権限許諾の確認と要求（拒否された場合のハンドリングを含む）",[28,339,340],{},"通知の構築と表示処理",[18,342,344],{"id":343},"_1-androidmanifestxmlにパーミッションの追加","1. AndroidManifest.xmlにパーミッションの追加",[14,346,347,348,351,352,354],{},"Android 13（APIレベル33）以降をターゲットとするアプリで通知を表示するには、\n",[31,349,350],{},"POST_NOTIFICATIONS"," 権限が必要です。",[31,353,333],{}," に以下の宣言を追加します。",[65,356,360],{"className":357,"code":358,"language":359,"meta":70,"style":70},"language-xml shiki shiki-themes github-light","\u003Cuses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" \u002F>\n\n","xml",[31,361,362],{"__ignoreMap":70},[74,363,364,367,371,374,376,379],{"class":76,"line":77},[74,365,366],{"class":84},"\u003C",[74,368,370],{"class":369},"shJU0","uses-permission",[74,372,373],{"class":94}," android:name",[74,375,88],{"class":84},[74,377,378],{"class":146},"\"android.permission.POST_NOTIFICATIONS\"",[74,380,381],{"class":84}," \u002F>\n",[18,383,385],{"id":384},"_2-通知表示の権限許諾確認","2. 通知表示の権限許諾確認",[14,387,388,389,392],{},"アプリ実行時にユーザーへ権限を要求します。\n実装には ",[31,390,391],{},"registerForActivityResult"," を使用してランタイムパーミッションのランチャーを生成し、適切なタイミングで要求を実行します。",[65,394,396],{"className":67,"code":395,"language":69,"meta":70,"style":70},"\u002F\u002F 権限要求結果を受け取るランチャーの登録\nprivate val requestPermissionLauncher = registerForActivityResult(\n    ActivityResultContracts.RequestPermission()\n) { isGranted: Boolean ->\n    if (isGranted) {\n        \u002F\u002F 権限が許可された場合の処理\n    } else {\n        \u002F\u002F 権限が拒否された場合の処理\n    }\n}\n\n\u002F\u002F 権限の確認と要求の実行\nprivate fun checkNotificationPermission() {\n    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {\n        when {\n            ContextCompat.checkSelfPermission(\n                this,\n                Manifest.permission.POST_NOTIFICATIONS\n            ) == PackageManager.PERMISSION_GRANTED -> {\n                \u002F\u002F 既に権限が許可されている場合は通知を表示できる\n            }\n            shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS) -> {\n                \u002F\u002F 過去に拒否されたことがある場合：\n                \u002F\u002F ダイアログ等で通知が必要な理由を説明した上で、再度ランチャーを起動する\n            }\n            else -> {\n                \u002F\u002F 初回要求、または「今後表示しない」を選択されていない場合\n                requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)\n            }\n        }\n    }\n}\n\n",[31,397,398,403,422,432,443,452,458,470,476,482,488,495,501,515,529,537,548,557,563,580,586,592,605,611,617,622,633,639,651,656,662,667],{"__ignoreMap":70},[74,399,400],{"class":76,"line":77},[74,401,402],{"class":303},"\u002F\u002F 権限要求結果を受け取るランチャーの登録\n",[74,404,405,408,411,414,416,419],{"class":76,"line":153},[74,406,407],{"class":80},"private",[74,409,410],{"class":80}," val",[74,412,413],{"class":84}," requestPermissionLauncher ",[74,415,88],{"class":80},[74,417,418],{"class":94}," registerForActivityResult",[74,420,421],{"class":84},"(\n",[74,423,424,427,430],{"class":76,"line":169},[74,425,426],{"class":84},"    ActivityResultContracts.",[74,428,429],{"class":94},"RequestPermission",[74,431,192],{"class":84},[74,433,434,437,440],{"class":76,"line":184},[74,435,436],{"class":84},") { isGranted: ",[74,438,439],{"class":94},"Boolean",[74,441,442],{"class":84}," ->\n",[74,444,446,449],{"class":76,"line":445},5,[74,447,448],{"class":80},"    if",[74,450,451],{"class":84}," (isGranted) {\n",[74,453,455],{"class":76,"line":454},6,[74,456,457],{"class":303},"        \u002F\u002F 権限が許可された場合の処理\n",[74,459,461,464,467],{"class":76,"line":460},7,[74,462,463],{"class":84},"    } ",[74,465,466],{"class":80},"else",[74,468,469],{"class":84}," {\n",[74,471,473],{"class":76,"line":472},8,[74,474,475],{"class":303},"        \u002F\u002F 権限が拒否された場合の処理\n",[74,477,479],{"class":76,"line":478},9,[74,480,481],{"class":84},"    }\n",[74,483,485],{"class":76,"line":484},10,[74,486,487],{"class":84},"}\n",[74,489,491],{"class":76,"line":490},11,[74,492,494],{"emptyLinePlaceholder":493},true,"\n",[74,496,498],{"class":76,"line":497},12,[74,499,500],{"class":303},"\u002F\u002F 権限の確認と要求の実行\n",[74,502,504,506,509,512],{"class":76,"line":503},13,[74,505,407],{"class":80},[74,507,508],{"class":80}," fun",[74,510,511],{"class":94}," checkNotificationPermission",[74,513,514],{"class":84},"() {\n",[74,516,518,520,523,526],{"class":76,"line":517},14,[74,519,448],{"class":80},[74,521,522],{"class":84}," (Build.VERSION.SDK_INT ",[74,524,525],{"class":80},">=",[74,527,528],{"class":84}," Build.VERSION_CODES.TIRAMISU) {\n",[74,530,532,535],{"class":76,"line":531},15,[74,533,534],{"class":80},"        when",[74,536,469],{"class":84},[74,538,540,543,546],{"class":76,"line":539},16,[74,541,542],{"class":84},"            ContextCompat.",[74,544,545],{"class":94},"checkSelfPermission",[74,547,421],{"class":84},[74,549,551,554],{"class":76,"line":550},17,[74,552,553],{"class":101},"                this",[74,555,556],{"class":84},",\n",[74,558,560],{"class":76,"line":559},18,[74,561,562],{"class":84},"                Manifest.permission.POST_NOTIFICATIONS\n",[74,564,566,569,572,575,578],{"class":76,"line":565},19,[74,567,568],{"class":84},"            ) ",[74,570,571],{"class":80},"==",[74,573,574],{"class":84}," PackageManager.PERMISSION_GRANTED ",[74,576,577],{"class":80},"->",[74,579,469],{"class":84},[74,581,583],{"class":76,"line":582},20,[74,584,585],{"class":303},"                \u002F\u002F 既に権限が許可されている場合は通知を表示できる\n",[74,587,589],{"class":76,"line":588},21,[74,590,591],{"class":84},"            }\n",[74,593,595,598,601,603],{"class":76,"line":594},22,[74,596,597],{"class":94},"            shouldShowRequestPermissionRationale",[74,599,600],{"class":84},"(Manifest.permission.POST_NOTIFICATIONS) ",[74,602,577],{"class":80},[74,604,469],{"class":84},[74,606,608],{"class":76,"line":607},23,[74,609,610],{"class":303},"                \u002F\u002F 過去に拒否されたことがある場合：\n",[74,612,614],{"class":76,"line":613},24,[74,615,616],{"class":303},"                \u002F\u002F ダイアログ等で通知が必要な理由を説明した上で、再度ランチャーを起動する\n",[74,618,620],{"class":76,"line":619},25,[74,621,591],{"class":84},[74,623,625,628,631],{"class":76,"line":624},26,[74,626,627],{"class":80},"            else",[74,629,630],{"class":80}," ->",[74,632,469],{"class":84},[74,634,636],{"class":76,"line":635},27,[74,637,638],{"class":303},"                \u002F\u002F 初回要求、または「今後表示しない」を選択されていない場合\n",[74,640,642,645,648],{"class":76,"line":641},28,[74,643,644],{"class":84},"                requestPermissionLauncher.",[74,646,647],{"class":94},"launch",[74,649,650],{"class":84},"(Manifest.permission.POST_NOTIFICATIONS)\n",[74,652,654],{"class":76,"line":653},29,[74,655,591],{"class":84},[74,657,659],{"class":76,"line":658},30,[74,660,661],{"class":84},"        }\n",[74,663,665],{"class":76,"line":664},31,[74,666,481],{"class":84},[74,668,670],{"class":76,"line":669},32,[74,671,487],{"class":84},[194,673,675],{"id":674},"拒否された時の再許諾確認rationale","拒否された時の再許諾確認（Rationale）",[14,677,678,681,682,685],{},[31,679,680],{},"shouldShowRequestPermissionRationale"," が ",[31,683,684],{},"true"," を返した場合は、ユーザーが一度権限を拒否したことを意味します。\nこの段階では、いきなりシステムダイアログを再表示するのではなく、「なぜこのアプリに通知権限が必要なのか（例：重要なリマインドを届けるため等）」をアプリ独自のUIで説明し、納得してもらった上で再度要求を行うフローが推奨されます。",[687,688],"hr",{},[18,690,692],{"id":691},"_3-通知の構築と表示処理","3. 通知の構築と表示処理",[14,694,695,696,34,699,702,703,705],{},"権限が確保されていることを確認した上で、",[31,697,698],{},"NotificationCompat.Builder",[31,700,701],{},"Notification.Builder","）を使用して通知を作成し、",[31,704,37],{}," で表示をシステムに依頼します。",[65,707,709],{"className":67,"code":708,"language":69,"meta":70,"style":70},"if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {\n    \n    \u002F\u002F 通知オブジェクトの構築\n    val notification = NotificationCompat.Builder(this, \"CHANNEL_ID\")\n        .setContentTitle(\"ここにタイトルを表示\")\n        .setSmallIcon(R.mipmap.ic_launcher) \u002F\u002F 必須：通知エリアに表示されるアイコン\n        .setContentText(\"ここに通知の本文テキストを表示\")\n        .setPriority(NotificationCompat.PRIORITY_DEFAULT)\n        .build()\n        \n    \u002F\u002F 通知の表示実行\n    NotificationManagerCompat.from(this).apply {\n        \u002F\u002F notificationId（第2引数）は通知を識別する任意の一意の数値\n        notify(1, notification)\n    }\n}\n\n",[31,710,711,733,738,743,770,785,798,812,822,830,835,840,859,864,877,881],{"__ignoreMap":70},[74,712,713,716,719,721,723,725,728,730],{"class":76,"line":77},[74,714,715],{"class":80},"if",[74,717,718],{"class":84}," (ContextCompat.",[74,720,545],{"class":94},[74,722,98],{"class":84},[74,724,102],{"class":101},[74,726,727],{"class":84},", Manifest.permission.POST_NOTIFICATIONS) ",[74,729,571],{"class":80},[74,731,732],{"class":84}," PackageManager.PERMISSION_GRANTED) {\n",[74,734,735],{"class":76,"line":153},[74,736,737],{"class":84},"    \n",[74,739,740],{"class":76,"line":169},[74,741,742],{"class":303},"    \u002F\u002F 通知オブジェクトの構築\n",[74,744,745,748,751,753,756,758,760,762,765,768],{"class":76,"line":184},[74,746,747],{"class":80},"    val",[74,749,750],{"class":84}," notification ",[74,752,88],{"class":80},[74,754,755],{"class":84}," NotificationCompat.",[74,757,141],{"class":94},[74,759,98],{"class":84},[74,761,102],{"class":101},[74,763,764],{"class":84},", ",[74,766,767],{"class":146},"\"CHANNEL_ID\"",[74,769,105],{"class":84},[74,771,772,775,778,780,783],{"class":76,"line":445},[74,773,774],{"class":84},"        .",[74,776,777],{"class":94},"setContentTitle",[74,779,98],{"class":84},[74,781,782],{"class":146},"\"ここにタイトルを表示\"",[74,784,105],{"class":84},[74,786,787,789,792,795],{"class":76,"line":454},[74,788,774],{"class":84},[74,790,791],{"class":94},"setSmallIcon",[74,793,794],{"class":84},"(R.mipmap.ic_launcher) ",[74,796,797],{"class":303},"\u002F\u002F 必須：通知エリアに表示されるアイコン\n",[74,799,800,802,805,807,810],{"class":76,"line":460},[74,801,774],{"class":84},[74,803,804],{"class":94},"setContentText",[74,806,98],{"class":84},[74,808,809],{"class":146},"\"ここに通知の本文テキストを表示\"",[74,811,105],{"class":84},[74,813,814,816,819],{"class":76,"line":472},[74,815,774],{"class":84},[74,817,818],{"class":94},"setPriority",[74,820,821],{"class":84},"(NotificationCompat.PRIORITY_DEFAULT)\n",[74,823,824,826,828],{"class":76,"line":478},[74,825,774],{"class":84},[74,827,189],{"class":94},[74,829,192],{"class":84},[74,831,832],{"class":76,"line":484},[74,833,834],{"class":84},"        \n",[74,836,837],{"class":76,"line":490},[74,838,839],{"class":303},"    \u002F\u002F 通知の表示実行\n",[74,841,842,845,847,849,851,854,857],{"class":76,"line":497},[74,843,844],{"class":84},"    NotificationManagerCompat.",[74,846,95],{"class":94},[74,848,98],{"class":84},[74,850,102],{"class":101},[74,852,853],{"class":84},").",[74,855,856],{"class":94},"apply",[74,858,469],{"class":84},[74,860,861],{"class":76,"line":503},[74,862,863],{"class":303},"        \u002F\u002F notificationId（第2引数）は通知を識別する任意の一意の数値\n",[74,865,866,869,871,874],{"class":76,"line":517},[74,867,868],{"class":94},"        notify",[74,870,98],{"class":84},[74,872,873],{"class":101},"1",[74,875,876],{"class":84},", notification)\n",[74,878,879],{"class":76,"line":531},[74,880,481],{"class":84},[74,882,883],{"class":76,"line":539},[74,884,487],{"class":84},[14,886,887],{},"正しく実装されると、デバイスの通知領域に指定したタイトルとテキスト、アイコンを持った通知が表示されます。",[10,889,890],{"id":890},"通知チャンネルの設定画面を表示する",[14,892,893],{},"Android 8.0（APIレベル26）以降で導入された通知チャンネルですが、\nアプリ側から直接、設定値（音、バイブレーション、重要度など）を変更することはできません。\nアプリが提供できる操作は、チャンネルの作成と削除のみに制限されています。",[14,895,896],{},"そのためユーザーが設定を変更できるようにするには、\nアプリ内から端末の通知チャンネル設定画面へ直接遷移する導線を設ける必要があります。",[18,898,899],{"id":899},"実装方法",[14,901,902],{},"アプリが作成した特定の通知チャンネルの設定画面へ直接遷移するには、以下のコードを実装します。",[65,904,906],{"className":67,"code":905,"language":69,"meta":70,"style":70},"val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply {\n    putExtra(Settings.EXTRA_APP_PACKAGE, packageName)\n    putExtra(Settings.EXTRA_CHANNEL_ID, channelId)\n}\nstartActivity(intent)\n\n",[31,907,908,927,935,942,946],{"__ignoreMap":70},[74,909,910,912,915,917,920,923,925],{"class":76,"line":77},[74,911,81],{"class":80},[74,913,914],{"class":84}," intent ",[74,916,88],{"class":80},[74,918,919],{"class":94}," Intent",[74,921,922],{"class":84},"(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).",[74,924,856],{"class":94},[74,926,469],{"class":84},[74,928,929,932],{"class":76,"line":153},[74,930,931],{"class":94},"    putExtra",[74,933,934],{"class":84},"(Settings.EXTRA_APP_PACKAGE, packageName)\n",[74,936,937,939],{"class":76,"line":169},[74,938,931],{"class":94},[74,940,941],{"class":84},"(Settings.EXTRA_CHANNEL_ID, channelId)\n",[74,943,944],{"class":76,"line":184},[74,945,487],{"class":84},[74,947,948,951],{"class":76,"line":445},[74,949,950],{"class":94},"startActivity",[74,952,953],{"class":84},"(intent)\n",[14,955,956,957,959,960,963],{},"通常の ",[31,958,950],{}," と同様に、\n適切なインテントアクション（",[31,961,962],{},"ACTION_CHANNEL_NOTIFICATION_SETTINGS","）を指定し、アプリのパッケージ名と対象のチャンネルIDをパラメータとして渡すことで、該当する設定画面を直接開くことができます。",[965,966,967],"blockquote",{},[14,968,969,972,973,975,976,979,980,983],{},[114,970,971],{},"注意："," > ",[31,974,962],{}," を使用する際は、",[31,977,978],{},"EXTRA_CHANNEL_ID"," だけでなく ",[31,981,982],{},"EXTRA_APP_PACKAGE"," の指定も必須となります。",[18,985,986],{"id":986},"参考",[209,988,989,998,1005],{},[28,990,991],{},[992,993,997],"a",{"href":994,"rel":995},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fui\u002Fviews\u002Fnotifications?hl=ja",[996],"nofollow","通知の概要 | Android デベロッパー | Android Developers",[28,999,1000],{},[992,1001,1004],{"href":1002,"rel":1003},"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fapp\u002FNotificationChannel.html",[996],"NotificationChannel | Android Developers",[28,1006,1007],{},[992,1008,1011],{"href":1009,"rel":1010},"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fprovider\u002FSettings#ACTION_CHANNEL_NOTIFICATION_SETTINGS",[996],"ACTION_CHANNEL_NOTIFICATION_SETTINGS | Android Developers",[1013,1014,1015],"style",{},"html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}",{"title":70,"searchDepth":153,"depth":153,"links":1017},[1018,1019,1020,1023,1024,1025,1026,1027,1030,1031,1032],{"id":20,"depth":153,"text":20},{"id":49,"depth":153,"text":50},{"id":108,"depth":153,"text":109,"children":1021},[1022],{"id":196,"depth":169,"text":197},{"id":255,"depth":153,"text":256},{"id":285,"depth":153,"text":286},{"id":326,"depth":153,"text":326},{"id":343,"depth":153,"text":344},{"id":384,"depth":153,"text":385,"children":1028},[1029],{"id":674,"depth":169,"text":675},{"id":691,"depth":153,"text":692},{"id":899,"depth":153,"text":899},{"id":986,"depth":153,"text":986},"2026-06-11T07:00:00+09:00",false,"md",{},"\u002Fandroid\u002Fandroid_sdk\u002Fnotification",{"title":5,"description":320},"01.android\u002F03.android_SDK\u002F10.notification","d6aN7diSTaukCl8wawXTjur7pA2SpaFFIApubIWOE_M",1781530001210]