dev/aos
[AOS] startActivityForResult
donguran
2024. 2. 5. 15:21
728x90
반응형
Flutter를 계속해서 그런가 모든 것이 가물가물하구나.
startActivityForResult는 Deprecated되었다.
2024-05-10-금 : 기존 response받았던 함수 이름
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
...
}
BluetoothAdapter의 상태를 확인한 후 isEnabled가 false인 경우 Bluetooth 이용자에게 사용한다고 요청해야 한다.
'registerForActivityResult' 함수를 사용하여 ActivityResultLauncher를 반환한다.
중요한 것은 이전은 requestCode로 확인을 하였으나, 바뀐 ForResult결과는 1:1매칭이다.
맞춤 계약이라 한다. 단순하게 ResultCode를 받을 경우 'StartActivityForResult'를 계약하면 된다.
(계약한다는 것은 파라메터에 넣어주는 것)
/**
* this method deprecated startActivityForResult method.
* [startActivityForResultLauncher] is register, and apply callback code insnippet.
* */
private val startActivityForResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {result ->
// callback
if (result.resultCode == RESULT_OK) {
}
}
java
private ActivityResultLauncher<Intent> startActivityForResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
// 콜백
if (result.getResultCode() == Activity.RESULT_OK) {
// RESULT_OK 처리
}
}
});
val enableBluetoothIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
startActivityForResultLauncher.launch(enableBluetoothIntent)
https://developer.android.com/training/basics/intents/result?hl=ko#custom
활동에서 결과 가져오기 | Android 개발자 | Android Developers
활동에서 결과 가져오기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱 내에서든 다른 앱에서든 다른 활동을 시작하는 것은 단방향 작업이 아니어도 됩
developer.android.com
2024-05-10-금
궁금해졌다.
과연 새로운 activityResultLauncher를 사용해서 다른 앱을 실행한 뒤
기존 onActivityResult함수도 동일하게 실행되는지.. 궁금하다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activityResultLauncher.launch(new Intent(this, SecondActivity.class));
}
private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult o) {
Log.d("donguran", "onActivityResult...");
}
}
);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.w("donguran", "onActivityResult.........");
}
}
결과는?
둘 다 전달받는다...
API버전 설정이 필요해보인다.
728x90
반응형