의 인텐트 액션과 열기 화면 - Level 26 대응편

Delphi 10.3 Rio에서 Android API Level 26 지원 그래서 이전에 할 수 없었던 Level 26의 Android Intent를 사용해 보았습니다.
기술 언어는 Delphi, 사용 단말기는 Nexus 5X (Android ver 8.1.0)

Android Developer 문서



Android Developer - Settings를 참조하십시오.

ACTION_APP_NOTIFICATION_SETTINGS



API 레벨 26
알림 설정 화면
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_APP_NOTIFICATION_SETTINGS);
Intent.putExtra(TJSettings.JavaClass.EXTRA_APP_PACKAGE, TAndroidHelper.Context.getPackageName);

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_CHANNEL_NOTIFICATION_SETTINGS



알림 상세 설정 화면
API 레벨 26
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています
// Notification を使うので、フォーム上に TNotificationCenter コンポーネントを置いています
// チャンネルは Channel: TChannel; で定義しています
// 作業用として chennel_id, channel_title: string; を定義
// 作業用として channel_importance: TImportance; を定義

// 作業用の変数に値を代入
channel_id := 'SampleChannel';
channel_title := 'SampleTitle';
chennel_importance := TImportance.Default;

// Channel を生成して値をセットします
Channel := NotificationCenter1.CreateChannel;
Channel.ID := channel_id;
Chennel.Title := channel_title;
Channel.Importance := channel_importance;

// 値をセットした Channel で通知チャンネルを生成します
NotificationCenter1.CreateOrUpdateChannel(Channel);

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
Intent.putExtra(TJSettings.JavaClass.EXTRA_APP_PACKAGE, TAndroidHelper.Context.getPackageName);
Intent.putExtra(TJSettings.JavaClass.EXTRA_CHANNEL_ID, StringToJString(channel_id));

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_HARD_KEYBOARD_SETTINGS



물리 키보드 설정 화면
API level 24
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_HARD_KEYBOARD_SETTINGS);

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS



앱 데이터 사용량 설정 화면
API level 24
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています
// URIは uri: string; で定義しています

// uri にパッケージ名をセットします
// ここでは getPackageName を使って自分自身のパッケージ名を取得しています
uri := 'package:' + JStringToString(TAndroidHelper.Context.getPackageName);

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS, StrToJURI(uri));

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_MANAGE_DEFAULT_APPS_SETTINGS



API level 24
기본 앱 설정 화면
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_MANAGE_UNKNOWN_APP_SOURCES



API 레벨 26
알 수 없는 앱 설치 설정 화면
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています
// URIは uri: string; で定義しています

// uri にパッケージ名をセットします
// ここでは getPackageName を使って自分自身のパッケージ名を取得しています
uri := 'package:' + JStringToString(TAndroidHelper.Context.getPackageName);

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_UNKNOWN_APP_SOURCES, StrToJURI(uri));

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_NIGHT_DISPLAY_SETTINGS



API 레벨 26
야간 모드 화면 설정 화면

그러나,
In some cases, a matching Activity may not exist, so ensure you safeguard against this.
그렇듯이 해당 활동이없는 경우가 많습니다.
이 경우 exception이 발생합니다 (화면 이미지 참조).
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_NIGHT_DISPLAY_SETTINGS);

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



ACTION_REQUEST_SET_AUTOFILL_SERVICE



자동 입력 서비스 설정 화면
API 레벨 26
// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider
//         Androidapi.JNI.GrapicsContentViewText を追加します
// インテントは Intent: JIntent; で定義しています
// URIは uri: string; で定義しています

// uri にパッケージ名をセットします
// ここでは getPackageName を使って自分自身のパッケージ名を取得しています
uri := 'package:' + JStringToString(TAndroidHelper.Context.getPackageName);

// 目的のインテントアクションのインテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_REQUEST_SET_AUTOFILL_SERVICE, StrToJURI(uri));

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);



이전에 작성한 Android 인텐트 액션 및 열기 화면 기사



이전에 공개한 인텐트 액션과 열기 화면의 소개입니다.
모든 코드는 Delphi로 작성되었습니다.
  • 안드로이드 인텐트 액션 및 열기 화면 - 1
  • 안드로이드 인텐트 액션 및 열기 화면 - 2
  • 안드로이드 인텐트 액션 및 열기 화면 - 3
  • 안드로이드 인텐트 액션 및 열기 화면 - 4
  • 안드로이드 인텐트 액션 및 열기 화면 - 5
  • 안드로이드 인텐트 액션 및 열기 화면 - 6

  • Level 28이라면 어떨까요?



    API 레벨 28 - ACTION_DATA_USAGE_SETTINGS
    라든지의 Level 28 이후의 정의는 없었다...사용하는 경우는 자력으로 만들지 않으면...

    좋은 웹페이지 즐겨찾기