Commit f378f536 authored by wanglei's avatar wanglei

初始化

parent 0615497c
...@@ -18,13 +18,13 @@ ...@@ -18,13 +18,13 @@
android:value="document_ui" /> android:value="document_ui" />
<application <application
android:logo="@mipmap/logo"
android:name=".helper.MyApplication" android:name=".helper.MyApplication"
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:logo="@mipmap/logo"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.PdfReaderAllPdfReader" android:theme="@style/Theme.PdfReaderAllPdfReader"
...@@ -81,6 +81,11 @@ ...@@ -81,6 +81,11 @@
android:exported="false" android:exported="false"
android:launchMode="singleTop" android:launchMode="singleTop"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.feedback.FeedbackActivity"
android:exported="false"
android:launchMode="singleTop"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
......
...@@ -19,6 +19,8 @@ import com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_WORD ...@@ -19,6 +19,8 @@ import com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfreaderallpdfreader.bean.MediaBean import com.base.pdfreaderallpdfreader.bean.MediaBean
import com.base.pdfreaderallpdfreader.utils.AssetUtils.readByteArrayFromAsset import com.base.pdfreaderallpdfreader.utils.AssetUtils.readByteArrayFromAsset
import com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption import com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption
import com.base.pdfreaderallpdfreader.utils.SpStringUtils
import com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY
import com.base.pdfreaderallpdfreader.utils.getMediaFile import com.base.pdfreaderallpdfreader.utils.getMediaFile
import java.io.File import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
...@@ -260,4 +262,12 @@ fun getDocumentType(mediaBean: MediaBean): String { ...@@ -260,4 +262,12 @@ fun getDocumentType(mediaBean: MediaBean): String {
} else { } else {
TYPE_PPT TYPE_PPT
} }
}
fun saveBookmarkChange(addRemove: Boolean, path: String) {
if (addRemove) {
SpStringUtils.addSpString(BOOKMARK_KEY, path)
} else {
SpStringUtils.deleteSpString(BOOKMARK_KEY, path)
}
} }
\ No newline at end of file
...@@ -30,4 +30,5 @@ class BookmarkViewModel : ViewModel() { ...@@ -30,4 +30,5 @@ class BookmarkViewModel : ViewModel() {
} }
return all.filter { it.isBookmarked } return all.filter { it.isBookmarked }
} }
} }
\ No newline at end of file
...@@ -2,18 +2,13 @@ package com.base.pdfreaderallpdfreader.ui.main.home ...@@ -2,18 +2,13 @@ package com.base.pdfreaderallpdfreader.ui.main.home
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.text.Spannable
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.databinding.FragmentHomeBinding import com.base.pdfreaderallpdfreader.databinding.FragmentHomeBinding
import com.base.pdfreaderallpdfreader.ui.document.DocumentActivity import com.base.pdfreaderallpdfreader.ui.document.DocumentActivity
import com.base.pdfreaderallpdfreader.ui.main.getPdfFastSize import com.base.pdfreaderallpdfreader.ui.main.getPdfFastSize
...@@ -47,6 +42,7 @@ class HomeFragment : Fragment() { ...@@ -47,6 +42,7 @@ class HomeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
binding.clPdfReader.setOnClickListener { binding.clPdfReader.setOnClickListener {
startActivity(Intent(requireContext(), DocumentActivity::class.java)) startActivity(Intent(requireContext(), DocumentActivity::class.java))
} }
...@@ -57,6 +53,8 @@ class HomeFragment : Fragment() { ...@@ -57,6 +53,8 @@ class HomeFragment : Fragment() {
binding.tvFileNumber.text = "$size Files" binding.tvFileNumber.text = "$size Files"
} }
} }
} else {
binding.ivArrow.visibility = View.INVISIBLE
} }
} }
......
...@@ -28,6 +28,9 @@ import com.artifex.mupdfdemo.MuPDFView ...@@ -28,6 +28,9 @@ import com.artifex.mupdfdemo.MuPDFView
import com.artifex.mupdfdemo.SearchTask import com.artifex.mupdfdemo.SearchTask
import com.artifex.mupdfdemo.SearchTaskResult import com.artifex.mupdfdemo.SearchTaskResult
import com.base.pdfreaderallpdfreader.R import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.ads.AdmobHelper
import com.base.pdfreaderallpdfreader.ads.AdmobHelper.isShowCloseDocument
import com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils
import com.base.pdfreaderallpdfreader.ads.admob.AdmobNativeUtils import com.base.pdfreaderallpdfreader.ads.admob.AdmobNativeUtils
import com.base.pdfreaderallpdfreader.base.BaseActivity import com.base.pdfreaderallpdfreader.base.BaseActivity
import com.base.pdfreaderallpdfreader.bean.ConstObject import com.base.pdfreaderallpdfreader.bean.ConstObject
...@@ -204,16 +207,16 @@ class PdfActivity : BaseActivity<ActivityPdfBinding>() { ...@@ -204,16 +207,16 @@ class PdfActivity : BaseActivity<ActivityPdfBinding>() {
return@addCallback return@addCallback
} }
// if (com.base.pdfreaderallpdfreader.ads.AdmobHelper.isShowCloseDocumentInter() && isShowCloseDocument()) { if (AdmobHelper.isShowCloseDocumentInter() && isShowCloseDocument()) {
// com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils.showInterstitialAd(this@PdfActivity) { AdmobInterstitialUtils.showInterstitialAd(this@PdfActivity) {
// if (it) { if (it) {
// com.base.pdfreaderallpdfreader.ads.AdmobHelper.lastCloseDocumentShowAd = System.currentTimeMillis() AdmobHelper.lastCloseDocumentShowAd = System.currentTimeMillis()
// } }
// binding.root.postDelayed({ finishToMain() }, 500) binding.root.postDelayed({ finishToMain() }, 500)
// } }
// } else { } else {
// binding.root.postDelayed({ finishToMain() }, 500) binding.root.postDelayed({ finishToMain() }, 500)
// } }
} }
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
......
...@@ -5,6 +5,9 @@ import android.annotation.SuppressLint ...@@ -5,6 +5,9 @@ import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Build import android.os.Build
import android.text.Spannable
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
...@@ -60,6 +63,14 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -60,6 +63,14 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
NotificationHoverUtils.stopNotificationHandler() NotificationHoverUtils.stopNotificationHandler()
} }
initWeatherUI() initWeatherUI()
val text = "All PDF Reader"
val spannableString = SpannableString(text)
spannableString.setSpan(
ForegroundColorSpan(Color.parseColor("#E20001")),
4, text.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
binding.tvSpanner.text = spannableString
val isHotLaunch = intent.extras?.getBoolean("isHotLaunch") ?: false val isHotLaunch = intent.extras?.getBoolean("isHotLaunch") ?: false
ifAgreePrivacy = true ifAgreePrivacy = true
...@@ -95,6 +106,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -95,6 +106,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
} }
} }
@SuppressLint("SetTextI18n")
private fun initWeatherUI() { private fun initWeatherUI() {
// 获取当前日期 // 获取当前日期
val calendar: Calendar = Calendar.getInstance() val calendar: Calendar = Calendar.getInstance()
...@@ -114,7 +126,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -114,7 +126,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
Calendar.SATURDAY -> R.string.saturday Calendar.SATURDAY -> R.string.saturday
else -> 0 else -> 0
} }
// binding.tvXingqi.text = resources.getString(dayOfWeekName) binding.tvWeek.text = resources.getString(dayOfWeekName)
val monthName = when (month) { val monthName = when (month) {
0 -> "January" 0 -> "January"
...@@ -131,8 +143,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -131,8 +143,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
11 -> "December" 11 -> "December"
else -> "Unknown" else -> "Unknown"
} }
binding.tvMonthDay.text = "$monthName $dayOfMonth"
// binding.tvMonthDay.text = "$monthName $dayOfMonth"
} }
private fun showAd() { private fun showAd() {
...@@ -169,12 +180,12 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -169,12 +180,12 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
private var jump: AtomicBoolean = AtomicBoolean(false) private var jump: AtomicBoolean = AtomicBoolean(false)
fun jumpNext() { fun jumpNext() {
if (jump.get()) { if (jump.get()) {
return return
} }
jump.set(true) jump.set(true)
binding.root.postDelayed({ binding.root.postDelayed({
if (isFirstStart) { if (isFirstStart) {
......
package com.base.pdfreaderallpdfreader.ui.view package com.base.pdfreaderallpdfreader.ui.view
import android.content.Context import android.content.Context
import android.graphics.Color
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import com.base.pdfreaderallpdfreader.R import com.base.pdfreaderallpdfreader.R
...@@ -39,6 +43,20 @@ object MainDialog { ...@@ -39,6 +43,20 @@ object MainDialog {
dialog.setOnDismissListener { dialog.setOnDismissListener {
dismissAction?.invoke() dismissAction?.invoke()
} }
val text = "To read and edit documents on your device, please allow PDF Reader to access all your files"
val redText = "PDF Reader"
val spannableString = SpannableString(text)
val startIndex = text.indexOf(redText)
val endIndex = startIndex + redText.length
spannableString.setSpan(
ForegroundColorSpan(Color.parseColor("#6DA9FD")),
startIndex,
endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
binding.tvTip.text = spannableString
return dialog return dialog
} }
......
...@@ -15,6 +15,7 @@ import com.base.pdfreaderallpdfreader.R ...@@ -15,6 +15,7 @@ import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.bean.ConstObject import com.base.pdfreaderallpdfreader.bean.ConstObject
import com.base.pdfreaderallpdfreader.databinding.DialogPageNumberBinding import com.base.pdfreaderallpdfreader.databinding.DialogPageNumberBinding
import com.base.pdfreaderallpdfreader.databinding.DialogPdfMoreBinding import com.base.pdfreaderallpdfreader.databinding.DialogPdfMoreBinding
import com.base.pdfreaderallpdfreader.ui.main.saveBookmarkChange
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity.Companion.jumpMerge import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity.Companion.jumpMerge
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity.Companion.jumpSplit import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity.Companion.jumpSplit
...@@ -22,6 +23,8 @@ import com.base.pdfreaderallpdfreader.ui.view.DocumentDialog.showDocumentDetail ...@@ -22,6 +23,8 @@ import com.base.pdfreaderallpdfreader.ui.view.DocumentDialog.showDocumentDetail
import com.base.pdfreaderallpdfreader.utils.IntentShareUtils import com.base.pdfreaderallpdfreader.utils.IntentShareUtils
import com.base.pdfreaderallpdfreader.utils.LogEx import com.base.pdfreaderallpdfreader.utils.LogEx
import com.base.pdfreaderallpdfreader.utils.NumberRangeFilter import com.base.pdfreaderallpdfreader.utils.NumberRangeFilter
import com.base.pdfreaderallpdfreader.utils.SpStringUtils
import com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY
import com.base.pdfreaderallpdfreader.utils.ToastUtils.toast import com.base.pdfreaderallpdfreader.utils.ToastUtils.toast
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
...@@ -134,7 +137,7 @@ object PdfDialog { ...@@ -134,7 +137,7 @@ object PdfDialog {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog) val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogPdfMoreBinding.inflate(LayoutInflater.from(this)) val binding = DialogPdfMoreBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(false) dialog.setCanceledOnTouchOutside(true)
dialog.show() dialog.show()
...@@ -161,6 +164,22 @@ object PdfDialog { ...@@ -161,6 +164,22 @@ object PdfDialog {
binding.llDetail.setOnClickListener { binding.llDetail.setOnClickListener {
showDocumentDetail(pafPath) showDocumentDetail(pafPath)
} }
val bookmarkList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
var isBookmarked = bookmarkList.contains(pafPath)
if (isBookmarked) {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_s)
} else {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_n)
}
binding.ivBookmark.setOnClickListener {
isBookmarked = !isBookmarked
if (isBookmarked) {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_s)
} else {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_n)
}
saveBookmarkChange(isBookmarked, pafPath)
}
binding.llShare.setOnClickListener { binding.llShare.setOnClickListener {
dialog.dismiss() dialog.dismiss()
runCatching { runCatching {
......
...@@ -12,44 +12,67 @@ ...@@ -12,44 +12,67 @@
android:id="@+id/iv_logo" android:id="@+id/iv_logo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="220dp" android:layout_marginStart="36dp"
android:src="@mipmap/logox" android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent" android:src="@mipmap/logo_corners"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
android:id="@+id/tv_spanner" android:id="@+id/tv_month_day"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="26dp"
android:textColor="#343434"
android:textSize="28sp"
app:layout_constraintStart_toStartOf="@id/iv_logo"
app:layout_constraintTop_toBottomOf="@id/iv_logo"
tools:text="October 09" />
<TextView
android:id="@+id/tv_week"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="27dp"
android:textColor="#A4ABC1"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" app:layout_constraintStart_toStartOf="@id/iv_logo"
app:layout_constraintTop_toBottomOf="@id/tv_month_day"
tools:text="Wednesday" />
<ImageView
android:id="@+id/iv_weather"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="180dp"
android:layout_marginEnd="40dp"
android:alpha="0"
android:src="@mipmap/duoyun"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_logo" tools:ignore="ContentDescription" />
tools:ignore="HardcodedText"
tools:text="AII PDF Reader" />
<TextView <TextView
android:id="@+id/tv_wendu"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="15dp" android:layout_marginTop="40dp"
android:text="@string/one_application_for_all_documents" android:layout_marginEnd="40dp"
android:textColor="#8A8A8A" android:layout_marginBottom="35dp"
android:textSize="12sp" android:alpha="0"
android:textStyle="bold" android:textColor="#16151A"
android:textSize="45sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/iv_weather"
app:layout_constraintTop_toBottomOf="@id/tv_spanner" /> tools:text="13℃/20℃" />
<com.base.pdfreaderallpdfreader.widget.XmlLottieAnimationView <com.base.pdfreaderallpdfreader.widget.XmlLottieAnimationView
android:id="@+id/lottie" android:id="@+id/lottie"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginBottom="150dp" android:layout_marginBottom="260dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -57,5 +80,29 @@ ...@@ -57,5 +80,29 @@
app:lottie_loop="true" app:lottie_loop="true"
app:lottie_rawRes="@raw/lottie_animation_splash" /> app:lottie_rawRes="@raw/lottie_animation_splash" />
<TextView
android:id="@+id/tv_spanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lottie"
tools:ignore="HardcodedText"
tools:text="AII PDF Reader" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="@string/one_application_for_all_documents"
android:textColor="#8A8A8A"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_spanner" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:src="@mipmap/pdf_permissions" android:src="@mipmap/permissions_tu"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tv_tip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
......
...@@ -380,5 +380,4 @@ ...@@ -380,5 +380,4 @@
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="148dp" android:layout_marginTop="148dp"
android:src="@mipmap/pdf_permissions" android:src="@mipmap/permissions_tu"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment