diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index 832e9714..00000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bc9f52d9..d344a745 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,108 +4,105 @@ - - + + + + + + + + android:exported="false" + android:grantUriPermissions="true"> + android:resource="@xml/provider_paths" /> - - + android:exported="true" + android:theme="@style/Theme.Cherry_pick_android" /> - - - - + android:exported="true" + android:theme="@style/Theme.Cherry_pick_android" /> - - - + android:theme="@style/Theme.Cherry_pick_android" /> - - - + android:exported="true" + android:theme="@style/Theme.Cherry_pick_android" /> - + - + - + - - - - - + android:theme="@style/Theme.Cherry_pick_android" + android:windowSoftInputMode="stateVisible" /> - - + android:exported="true" + android:theme="@style/Theme.Cherry_pick_android" /> - - + android:exported="true" + android:theme="@style/Theme.Cherry_pick_android" /> \ No newline at end of file diff --git "a/app/src/main/assets/\354\236\204\354\213\234\352\260\234\354\235\270\354\240\225\353\263\264\354\262\230\353\246\254\353\260\251\354\271\250.txt" "b/app/src/main/assets/\354\236\204\354\213\234\352\260\234\354\235\270\354\240\225\353\263\264\354\262\230\353\246\254\353\260\251\354\271\250.txt" new file mode 100644 index 00000000..01b9de01 --- /dev/null +++ "b/app/src/main/assets/\354\236\204\354\213\234\352\260\234\354\235\270\354\240\225\353\263\264\354\262\230\353\246\254\353\260\251\354\271\250.txt" @@ -0,0 +1,75 @@ +**제 1 장 총칙** +제 1 조 (목적) +이 약관은 체리픽(가칭)(이하 "회사"라 합니다)에서 제공하는 체리픽(가칭)(이하 "서비스"라 합니다) +의 이용 조건 및 절차에 관한 기본적인 사항을 규정함을 목적으로 합니다. +제 2 조 (약관의 효력 및 변경) +① 이 약관은 서비스 화면이나 기타의 방법으로 이용고객에게 공지함으로써 효력을 발생합니다. +② 회사는 이 약관의 내용을 변경할 수 있으며, 변경된 약관은 제1항과 같은 방법으로 공지 또는 +통지함으로써 효력을 발생합니다. +제 3 조 (용어의 정의) +이 약관에서 사용하는 용어의 정의는 다음과 같습니다. +① 이용자 : 회사와 서비스 이용계약을 체결한 개인 또는 단체를 말합니다. +⑤ 해지 : 회사 또는 이용자가 서비스 이용계약을 취소하는 것을 말합니다. +**제 2 장 서비스 이용계약** +제 4 조 (이용계약의 성립) +① 이용약관 동의 버튼을 누르면 이 약관에 동의하는 것으로 간주됩니다. +② 이용계약은 서비스 이용희망자의 이용약관 동의 후 이용 신청에 대하여 회사가 승낙함으로써 +성립합니다. +**제 3 장 계약 당사자의 의무** +제 5 조 (회사의 의무) +가 회사는 이용자에게 각 호의 서비스를 제공합니다. +가. 직군 별 맞춤형 뉴스 제공 +나. 타 키워드 등록에 따른 키워드 뉴스 제공 +다. 각종 부가서비스 +② 회사는 서비스 제공과 관련하여 취득한 이용자의 개인정보를 동의없이 타인에게 누설, 공개 +또는 배포할 수 없으며, 서비스관련 업무 이외의 상업적 목적으로 사용할 수 없습니다. 단, 다음 +각 호에 해당하는 경우는 예외입니다. +가. 전기통신기본법 등 법률의 규정에 의해 국가기관의 요구가 있는 경우 +나. 범죄에 대한 수사상의 목적이 있거나 정보통신윤리 위원회의 요청이 있는 경우 +다. 기타 관계법령에서 정한 절차에 따른 요청이 있는 경우 +③ 회사는 이 약관에서 정한 바에 따라 지속적, 안정적으로 서비스를 제공할 의무가 있습니다. +제 6 조 (이용자의 의무) +① 이용자는 서비스 이용 시 다음 각 호의 행위를 하지 않아야 합니다. +가. 서비스에서 얻은 정보를 사이트의 사전승낙 없이 이용자의 이용 이외의 목적으로 복제하거나 +이를 변경, 출판 및 방송 등에 사용하거나 타인에게 제공하는 행위 +다. 회사의 저작권, 타인의 저작권 등 기타 권리를 침해하는 행위 +라. 공공질서 및 미풍양속에 위반되는 내용의 정보, 문장, 도형 등을 타인에게 유포하는 행위 +마. 범죄와 결부된다고 객관적으로 판단되는 행위 +바. 기타 관계법령에 위배되는 행위 +② 이용자는 관계법령, 이 약관에서 규정하는 사항, 서비스 이용 안내 및 주의 사항을 준수하여야 +합니다. +③ 이용자는 내용별로 사이트가 서비스 공지사항에 게시하거나 별도로 공지한 이용 제한 사항을 +준수하여야 합니다. +**제 4 장 서비스 제공 및 이용** +제 7 조 (서비스 제한 및 정지) +① 회사는 전시, 사변, 천재지변 또는 이에 준하는 국가비상사태가 발생하거나 발생할 우려가 있 +는 경우와 전기통신사업법에 의한 기간통신 사업자가 전기통신서비스를 중지하는 등 기타 불가항 +력적 사유가 있는 경우에는 서비스의 전부 또는 일부를 제한하거나 정지할 수 있습니다. +**제 5 장 계약사항의 변경, 해지** +제 8 조 (계약사항의 해지) +사용자는 서비스 이용계약을 해지할 수 있으며, 해지할 경우에는 본인이 직접 회사 공식 메일(링 +크)로 해지신청을 하여야 합니다. 회사는 이용자가 다음 각 항의 1에 해당하여 이용계약을 해지하 +고자 할 경우에는 해지조치 7일전까지 그 뜻을 이용고객에게 통지하여 소명할 기회를 주어야 합 +니다. +① 이용고객이 이용제한 규정을 위반하거나 그 이용제한 기간 내에 제한 사유를 해소하지 않는 +경우 +② 정보통신윤리위원회가 이용해지를 요구한 경우 +③ 이용고객이 정당한 사유 없이 의견진술에 응하지 아니한 경우 +사이트는 상기 규정에 의하여 해지된 이용고객에 대해서는 별도로 정한 기간동안 가입을 제한할 +수 있습니다. +**제 6 장 손해배상** +제 9 조 (면책조항) +① 회사는 이용자가 서비스 제공으로부터 기대되는 이익을 얻지 못하였거나 서비스 자료에 대한 +취사선택 또는 이용으로 발생하는 손해 등에 대해서는 책임이 면제됩니다. +② 회사는 이용자의 귀책사유나 제3자의 고의로 인하여 서비스에 장애가 발생하거나 회원의 데이 +터가 훼손된 경우에 책임이 면제됩니다. +③ 회사는 이용자가 게시 또는 전송한 자료의 내용에 대해서는 책임이 면제됩니다. +제 10 조 (관할법원) +서비스와 관련하여 회사와 이용자간에 분쟁이 발생할 경우 회사의 본사 소재지를 관할하는 법원 +을 관할법원으로 합니다. +**제 7 장 이용자 정책** +체리픽에서 사용자가 선택한 직군에 대한 최근 뉴스를 제공합니다. +헤드라잇은 사용자가 등록한 키워드에 해당하는 최근 뉴스를 제공합니다. +**제 8 장 구독 결제 신뢰 안전 요구 사항** +체리픽은 구글 플레이스토어가 부여된 애플리케이션 최종 사용자 약관을 준수합니다. +결제 관련 신고 및 문의 사항이 있으면, (링크)로 연락을 하실 수 있습니다. diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MarketingPolicy.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MarketingPolicy.kt new file mode 100644 index 00000000..94961e81 --- /dev/null +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MarketingPolicy.kt @@ -0,0 +1,52 @@ +package com.example.cherry_pick_android.presentation.ui.mypage + +import android.content.Context +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import com.example.cherry_pick_android.databinding.ActivityMarketingPolicyBinding +import java.io.BufferedReader +import java.io.IOException +import java.io.InputStreamReader + +class MarketingPolicy : AppCompatActivity() { + private lateinit var binding: ActivityMarketingPolicyBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityMarketingPolicyBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) + + binding.tvMarketingPolicy.text = getTextString(this,"임시개인정보처리방침") + goBack() + } + + private fun goBack() { + binding.ibtnBack.setOnClickListener{ + finish() + } + } + + private fun getTextString(context: Context, filename: String) : String{ + val fString = StringBuilder() + val reader: BufferedReader + + try { + reader = BufferedReader( + InputStreamReader(context.resources.assets.open("$filename.txt")) + ) + + var str: String? + while (reader.readLine().also {str = it} != null) { + fString.append(str) + fString.append('\n') + } + reader.close() + return fString.toString() + } + catch(e: IOException) { + e.printStackTrace() + } + return "fail" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt index f7cb90ad..aaceb372 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt @@ -4,6 +4,7 @@ import android.app.AlertDialog import android.content.Intent import androidx.fragment.app.Fragment import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -75,7 +76,6 @@ class MyPageFragment : Fragment() { it.startActivity(intent) } } - // 스토어 별점 남기기 이동 ibtnMoveToScore.setOnClickListener { // val intent = Intent(Intent.ACTION_VIEW) @@ -84,11 +84,28 @@ class MyPageFragment : Fragment() { } // 이용약관 및 사용자 정책 페이지 이동 ibtnMoveToPolicy.setOnClickListener { - + Log.d(TAG,"이용약관 페이지 이동") + activity?.let { + val intent = Intent(it, UserPolicy::class.java) + it.startActivity(intent) + } + } + // 마케팅수신동의 페이지 이동 + tvMypageMarketingPolicy.setOnClickListener { + Log.d(TAG,"마케팅 페이지 이동") + activity?.let { + val intent = Intent(it, MarketingPolicy::class.java) + it.startActivity(intent) + } + } + // 개인정보처리방침 페이지 이동 + tvMypagePrivacyPolicy.setOnClickListener { + activity?.let { + Log.d(TAG,"개인정보 페이지 이동") + val intent = Intent(it, PrivacyPolicy::class.java) + it.startActivity(intent) + } } - // 언론사 연락처 - - // 개인정보처리방침 } } diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/PrivacyPolicy.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/PrivacyPolicy.kt new file mode 100644 index 00000000..3479679d --- /dev/null +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/PrivacyPolicy.kt @@ -0,0 +1,52 @@ +package com.example.cherry_pick_android.presentation.ui.mypage + +import android.content.Context +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import com.example.cherry_pick_android.databinding.ActivityPrivacyPolicyBinding +import java.io.BufferedReader +import java.io.IOException +import java.io.InputStreamReader + +class PrivacyPolicy : AppCompatActivity() { + private lateinit var binding: ActivityPrivacyPolicyBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityPrivacyPolicyBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) + + binding.tvPrivacyPolicy.text = getTextString(this,"임시개인정보처리방침") + goBack() + } + + private fun goBack() { + binding.ibtnBack.setOnClickListener{ + finish() + } + } + + private fun getTextString(context: Context, filename: String) : String{ + val fString = StringBuilder() + val reader: BufferedReader + + try { + reader = BufferedReader( + InputStreamReader(context.resources.assets.open("$filename.txt")) + ) + + var str: String? + while (reader.readLine().also {str = it} != null) { + fString.append(str) + fString.append('\n') + } + reader.close() + return fString.toString() + } + catch(e: IOException) { + e.printStackTrace() + } + return "fail" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/UserPolicy.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/UserPolicy.kt new file mode 100644 index 00000000..9899d6f3 --- /dev/null +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/UserPolicy.kt @@ -0,0 +1,53 @@ +package com.example.cherry_pick_android.presentation.ui.mypage + +import android.content.Context +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import com.example.cherry_pick_android.databinding.ActivityUserPolicyBinding +import java.io.BufferedReader +import java.io.IOException +import java.io.InputStreamReader + +class UserPolicy : AppCompatActivity() { + private lateinit var binding: ActivityUserPolicyBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityUserPolicyBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) + + binding.tvUserPolicy.text = getTextString(this,"임시개인정보처리방침") + goBack() + } + + private fun goBack() { + binding.ibtnBack.setOnClickListener{ + finish() + } + } + + private fun getTextString(context: Context, filename: String) : String{ + val fString = StringBuilder() + val reader: BufferedReader + + try { + reader = BufferedReader( + InputStreamReader(context.resources.assets.open("$filename.txt")) + ) + + var str: String? + while (reader.readLine().also {str = it} != null) { + fString.append(str) + fString.append('\n') + } + reader.close() + return fString.toString() + } + catch(e: IOException) { + e.printStackTrace() + } + return "fail" + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_job_group.xml b/app/src/main/res/layout/activity_job_group.xml index ee7faf5b..e518fbe8 100644 --- a/app/src/main/res/layout/activity_job_group.xml +++ b/app/src/main/res/layout/activity_job_group.xml @@ -19,7 +19,7 @@ android:id="@+id/ibtn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="16dp" + android:layout_margin="20dp" android:background="@null" android:scaleType="fitCenter" android:src="@drawable/ic_back" diff --git a/app/src/main/res/layout/activity_marketing_policy.xml b/app/src/main/res/layout/activity_marketing_policy.xml new file mode 100644 index 00000000..86b8bfa5 --- /dev/null +++ b/app/src/main/res/layout/activity_marketing_policy.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_privacy_policy.xml b/app/src/main/res/layout/activity_privacy_policy.xml new file mode 100644 index 00000000..fc4f8d85 --- /dev/null +++ b/app/src/main/res/layout/activity_privacy_policy.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index 0f67a264..2e0f86ce 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -13,9 +13,7 @@ android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" - tools:ignore="MissingConstraints" - tools:layout_editor_absoluteX="0dp" - tools:layout_editor_absoluteY="-2dp"> + tools:ignore="MissingConstraints" > + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mypage.xml b/app/src/main/res/layout/fragment_mypage.xml index 21e1f987..9453df3a 100644 --- a/app/src/main/res/layout/fragment_mypage.xml +++ b/app/src/main/res/layout/fragment_mypage.xml @@ -176,13 +176,13 @@ android:layout_marginBottom="20dp"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15aca66a..e96436d4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,7 +39,7 @@ 스토어 별점 남기기 이용약관 및 사용자 정책 - 언론사 연락처 + 마케팅 정보 수집 및 수신 동의 개인정보처리방침 @@ -62,7 +62,7 @@ 키워드 스크랩 마이페이지 - + 오름차순 내림차순 인기순 @@ -147,7 +147,7 @@ 로그아웃 하시겠습니까? 로그아웃 취소 - + 기사 요약하기 기사 영어로 번역하기