티스토리 뷰

반응형

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 구현을 검토하고 기기별 문제 또는 제한 사항을 찾아보십시오.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함