| /* | |
| * Copyright (C) 2023 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package com.android.cts.notesapp; | |
| import android.Manifest; | |
| import android.app.Activity; | |
| import android.app.StatusBarManager; | |
| import android.content.Intent; | |
| import android.content.pm.PackageManager; | |
| import android.os.Bundle; | |
| import android.view.View; | |
| import android.widget.Button; | |
| import android.widget.TextView; | |
| import androidx.core.app.ActivityCompat; | |
| /** | |
| * A test activity to be used as the Default notes app for CTS Verifier test. | |
| */ | |
| public class NotesAppActivity extends Activity { | |
| private static final Intent API_ACTION = | |
| new Intent(Intent.ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE); | |
| private static final int REQUEST_CODE = 42; | |
| private StatusBarManager mStatusBarManager; | |
| private TextView mStatusMessageTextView; | |
| @Override | |
| protected void onCreate(Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| setContentView(R.layout.main); | |
| mStatusMessageTextView = findViewById(R.id.status_message); | |
| // Set up button firing the capture content intent action. | |
| Button fireIntentActionButton = findViewById(R.id.fire_intent_action); | |
| fireIntentActionButton.setOnClickListener(unused -> { | |
| mStatusMessageTextView.setVisibility(View.INVISIBLE); | |
| startActivityForResult(API_ACTION, REQUEST_CODE); | |
| }); | |
| // Set up button that calls the can-use API. | |
| mStatusBarManager = getSystemService(StatusBarManager.class); | |
| Button callCanUseApiButton = findViewById(R.id.call_can_use_api); | |
| callCanUseApiButton.setOnClickListener(unused -> { | |
| mStatusMessageTextView.setVisibility(View.INVISIBLE); | |
| // Check for permission before making the API call. | |
| if (ActivityCompat.checkSelfPermission(NotesAppActivity.this, | |
| Manifest.permission.LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE) | |
| != PackageManager.PERMISSION_GRANTED) { | |
| mStatusMessageTextView.setText(R.string.permission_not_available); | |
| mStatusMessageTextView.setVisibility(View.VISIBLE); | |
| return; | |
| } | |
| // Perform the API call and update UI state. | |
| boolean canUseApiResponse = | |
| mStatusBarManager.canLaunchCaptureContentActivityForNote(NotesAppActivity.this); | |
| if (canUseApiResponse) { | |
| mStatusMessageTextView.setText(R.string.can_use_api_returned_true); | |
| } else { | |
| mStatusMessageTextView.setText(R.string.can_use_api_returned_false); | |
| } | |
| mStatusMessageTextView.setVisibility(View.VISIBLE); | |
| }); | |
| } | |
| @Override | |
| protected void onActivityResult(int requestCode, int resultCode, Intent data) { | |
| // Return early for unrelated request codes. | |
| if (requestCode != REQUEST_CODE) { | |
| return; | |
| } | |
| // Handle API call failures indicated by RESULT_CANCELED result code. | |
| if (resultCode == Activity.RESULT_CANCELED) { | |
| mStatusMessageTextView.setText(R.string.api_call_failed); | |
| mStatusMessageTextView.setVisibility(View.VISIBLE); | |
| return; | |
| } | |
| // Get the response code from API call and update UI in a switch statement. | |
| int apiResponseCode = | |
| data.getIntExtra(Intent.EXTRA_CAPTURE_CONTENT_FOR_NOTE_STATUS_CODE, -1); | |
| switch (apiResponseCode) { | |
| case Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS: | |
| if (data.getData() == null) { | |
| // In case there is no screenshot URI returned, set status to API failed. | |
| mStatusMessageTextView.setText(R.string.api_call_failed); | |
| } else { | |
| mStatusMessageTextView.setText(R.string.launch_and_add); | |
| } | |
| break; | |
| case Intent.CAPTURE_CONTENT_FOR_NOTE_USER_CANCELED: | |
| mStatusMessageTextView.setText(R.string.launch_and_cancel); | |
| break; | |
| case Intent.CAPTURE_CONTENT_FOR_NOTE_WINDOW_MODE_UNSUPPORTED: | |
| mStatusMessageTextView.setText(R.string.launch_window_unsupported); | |
| break; | |
| case Intent.CAPTURE_CONTENT_FOR_NOTE_BLOCKED_BY_ADMIN: | |
| mStatusMessageTextView.setText(R.string.launch_blocked_by_admin); | |
| break; | |
| default: | |
| mStatusMessageTextView.setText(R.string.api_call_failed); | |
| } | |
| mStatusMessageTextView.setVisibility(View.VISIBLE); | |
| } | |
| } |