AndroidManifest.xml
<!--지도 API 사용을 위한 퍼미션과 앱 키-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<meta-data android:name="com.kakao.sdk.AppKey" android:value="API키"/>
<!--좌표 받아오는데 필요-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 찍힌 사진을 외장 모메리에 저장하기 위해서 외장 USB에 쓰지 권한을 요청한다. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.camera" />
<!--android:networkSecurityConfig="@xml/network_security_config" 코드 application에 넣으면 서버점검 오류 발생-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher_foreground"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_foreground"
android:usesCleartextTraffic="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Intro">
<intent-filter>
<action
android:name="android.intent.action.MAIN" ></action>
<category
android:name="android.intent.category.LAUNCHER" ></category>
<!-- URL scheme 사용을 위한 코드 -->
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="test2" android:scheme="bill" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"/>
<activity android:name="com.yongbeam.y_photopicker.util.photopicker.PhotoPickerActivity"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity android:name="com.yongbeam.y_photopicker.util.photopicker.PhotoPagerActivity"
android:theme="@style/Theme.AppCompat.NoActionBar"/>
</application>
</manifest>
network_security_config.xml
<network-security-config>
//http 네트워크 통신에 대한 예외처리
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">maps.daum-img.net</domain>
<!--
<domain includeSubdomains="true">"http://개인 웹 서버 주소/"</domain>
-->
</domain-config>
</network-security-config>
MainActivity.java
protected void onPostExecute(String results) {
lastResult = results;
MainActivity activity = mActivityWeakReference.get();
if (activity != null && !activity.isFinishing()) {
Handler buttonHandler = new Handler(Looper.getMainLooper());
buttonHandler.postDelayed(new Runnable() {
@Override
public void run() {
if(findFlag){
//찾은 코드 서버로 던짐
responseAll = "";
com.stdtree.myapplication.WebService.findanswer_webcall(lastResult, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Handler buttonHandler = new Handler(Looper.getMainLooper());
buttonHandler.postDelayed(new Runnable() {
@Override
public void run() {
masterAct.bindMassageToBot("서버 점검중 입니다.");
masterAct.hideProgress();
}
},0);
}
});
}
만들고있는 앱에 카카오 지도 API중 검색기능을 사용하려 URL Scheme로 검색기능을 넣었습니다.
URL Scheme을 사용하는 방법을 검색하여 찾다가 네트워크 통신에 대한 예외처리를 위해 network_security_config.xml 파일을 추가후 메니페스트에 android:networkSecurityConfig="@xml/network_security_config" 코드를 추가하라고 하여 추가하였습니다.
.
.
.
.
.
문제점: 제가 만들고 있는 앱은 제 개인 웹 서버에서 게시글의 내용을 읽어오는 코드들이 들어있습니다. 하지만 해당 코드 추가 이후 웹 서버에서 게시글의 내용을 읽어오지 못하고 예외가 발생하여 위의 MainActivity에 onPostExecute메서드 내부 코드인 서버점검중이라는 오류가 출력이 됩니다.
.
.
시도: 메니페스트 파일에 추가한 android:networkSecurityConfig="@xml/network_security_config" 코드를 지워보니 정상작동 하는것을 보아 network_security_config.xml에 대해 찾아보았고 네트워크 보안 구성으로 트래픽 해제와 같은 설정을 해주는 코드라고 하는것같아 maps.daum-img.net 아래에
"http://개인 웹 서버/" 와 같이 제 개인 서버 주소를 등록해봤지만 동일하게 서버 점검중이라는 오류가 출력되었습니다.
.
.
질문: 1. 제 개인 웹 서버통신과 network_security_config.xml의 네트워크 보안 구성 설정으로 인한 문제가 맞나요?
-
해당 코드가 일반 텍스트 트래픽 선택 해제라고 하는데 이로인해 제 개인 웹서버와 통신이 안될수도 있나요?
-
개인 웹서버와 통신을 원할하게 하기위해서는 어떻게 해야하나요?? maps.daum-img.net과 같이 제 웹서버 주소를 등록해주면될것같은데 시도해봤듯이 점검중이라고 출력되네요 ㅠ