티스토리 뷰
반응형
Android 10 이후 권한 처리 방식이 일부 변경되어 현재 겪고 있는 문제를 일으킬 수 있습니다.
이 문제를 해결하려면 다음 단계를 시도하십시오.
1. 앱에 AndroidManifest.xml 파일에 적절한 권한이 있는지 확인합니다.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
2. 위치 및 블루투스에 대한 런타임 권한 요청:
Android 6.0(API 레벨 23)부터 사용자는 앱을 설치할 때가 아니라 앱이 실행되는 동안 앱에 권한을 부여합니다. 런타임에 필요한 권한을 요청해야 합니다.
private static final int PERMISSIONS_REQUEST_CODE = 1234;
private static final String[] REQUIRED_PERMISSIONS = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN
};
private void requestPermissions() {
if (!hasPermissions(this, REQUIRED_PERMISSIONS)) {
ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, PERMISSIONS_REQUEST_CODE);
}
}
private static boolean hasPermissions(Context context, String... permissions) {
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permissions granted, continue with your logic
} else {
// Permission denied, inform the user and close the app
}
}
}
3. 위치 서비스가 활성화되어 있는지 확인합니다.
Wi-Fi Direct를 사용하여 주변 장치를 검색하려면 장치에서 위치 서비스를 활성화해야 합니다. Settings.ACTION_LOCATION_SOURCE_SETTINGS 인텐트를 사용하여 사용자에게 위치 서비스를 활성화하라는 메시지를 표시할 수 있습니다.
private void checkLocationEnabled() {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
new AlertDialog.Builder(this)
.setMessage("Location services must be enabled for Wi-Fi Direct to work.")
.setPositiveButton("Enable", (dialog, which) -> {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
})
.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss())
.create()
.show();
}
}
4. 두 장치 모두 Wi-Fi Direct가 활성화되어 있는지 확인합니다.
두 기기 모두 Wi-Fi Direct가 켜져 있는지 확인합니다. 각 장치의 Wi-Fi 설정으로 이동하여 Wi-Fi Direct를 활성화할 수 있습니다.
이 단계를 수행하면 앱에서 Android 13 기기를 검색하고 연결할 수 있어야 합니다. 여전히 문제가 발생하면 앱에서 Wi-Fi Direct 구현을 검토하고 기기별 문제 또는 제한 사항을 찾아보십시오.
반응형
'Mobile > Android' 카테고리의 다른 글
안드로이드 폰을 테스트용으로 루팅하려는 꼭 포멧해야 하나요? (0) | 2023.04.26 |
---|---|
java에 역행렬 계산해주는 함수나 라이브러리가 있을까요? (0) | 2023.04.23 |
2020년 6월 22일 기준 신규 안드로이드 앱 등록기간 최소 5일 (0) | 2019.10.26 |
Finish can only be called once in android studio (0) | 2017.04.07 |
안드로이드 sensorPortait 이란 놈 (0) | 2017.01.03 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오디오북
- youtube
- 1일1독
- 아이폰개발
- 유튜브
- 아이폰
- Android
- 성경
- bible
- genesis
- 성경통독
- 말씀
- iPhone
- 통독
- 창세기
- VR
- mysql
- 성경책
- 안드로이드
- ChatGPT
- react
- 성경듣기
- IOS
- snapkit
- MariaDB
- 챗gpt
- AWS
- 반응형웹
- 성경읽기
- SWIFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함