Commit e7797a5c authored by wanglei's avatar wanglei

...

parent 124d0255
......@@ -13,7 +13,7 @@ android {
compileSdk = 34
defaultConfig {
applicationId = "com.base.pdfviewerscannerwhite"
applicationId = "com.ttesst.gododo.redause"
minSdk = 24
targetSdk = 34
versionCode = 2
......@@ -22,23 +22,27 @@ android {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
fun Long.toFormatTime3(): String {
return SimpleDateFormat("yyyy-MM-dd HH-mm-ss", Locale.ENGLISH).format(this)
return SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.ENGLISH).format(this)
}
setProperty("archivesBaseName", "pdf-v${System.currentTimeMillis().toFormatTime3()}")
signingConfigs {
create("release") {
//E6:A2:DD:0A:E6:73:22:32:4E:98:08:78:73:29:01:C4:8D:A0:38:DB:D8:B2:DD:B9:AC:55:69:B2:6B:DF:B0:B4
storeFile = file("../smartcl.jks")
storePassword = "123456"
keyAlias = "key0"
keyPassword = "123456"
}
}
}
buildTypes {
debug {
signingConfig = signingConfigs.getByName("release")
}
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
......
{
"project_info": {
"project_number": "52701079012",
"project_id": "cleanmasterfile",
"storage_bucket": "cleanmasterfile.appspot.com"
"project_number": "953792647345",
"project_id": "pdf-test-d0ae7",
"storage_bucket": "pdf-test-d0ae7.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:52701079012:android:457119c4f48cba94fa93f1",
"mobilesdk_app_id": "1:953792647345:android:c5234e8bfc859f8b20d290",
"android_client_info": {
"package_name": "com.base.pdfviewerscannerwhite"
"package_name": "com.ttesst.gododo.redause"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDr_7jwK1_HHUX6gW--AiPvN4HABddApNk"
"current_key": "AIzaSyBT6B1oPmkojGX0TgBOI9bDkx5pdEFXWoo"
}
],
"services": {
......
......@@ -119,6 +119,31 @@
android:resource="@xml/file_paths" />
</provider>
<service
android:name=".service.StayNotificationService"
android:foregroundServiceType="dataSync" />
<service
android:name=".fcm.MessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver
android:name=".fcm.FcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.ttesst.gododo.redause" />
</intent-filter>
</receiver>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
......
package com.base.pdfviewerscannerwhite.ads
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.ValueEventListener
import com.google.firebase.database.ktx.database
import com.google.firebase.ktx.Firebase
//Realtime Database
object FirebaseDatabase {
private val TAG = "FirebaseDatabase"
// Write a message to the database
val database = Firebase.database
var rootRef = database.reference
//开屏限制
const val open_limit_request = "open_limit_request"
const val open_limit_show = "open_limit_show"
const val open_limit_click = "open_limit_click"
//插页限制
const val inter_limit_request = "inter_limit_request"
const val inter_limit_show = "inter_limit_show"
const val inter_limit_click = "inter_limit_click"
//原生广告现在
const val native_limit_request = "native_limit_request"
const val native_limit_show = "native_limit_show"
const val native_limit_click = "native_limit_click"
//推送总数量现在
val popup_count = "popup_count"//所有常规推送的当日推送次数限制,0 为不限制
//推送总开关 0 关 1开
val popup_status = "popup_status"
//推送样式一配置
val popup_style1_start = "popup_style1_start"
val popup_style1_end = "popup_style1_end"
val popup_style1_status = "popup_style1_status"
val popup_style1_count = "popup_style1_count"
val popup_style1_interval = "popup_style1_interval"
//推送样式二配置
val popup_style2_start = "popup_style2_start"
val popup_style2_end = "popup_style2_end"
val popup_style2_status = "popup_style2_status"
val popup_style2_count = "popup_style2_count"
val popup_style2_interval = "popup_style2_interval"
//推送样式三配置
val popup_style3_start = "popup_style3_start"
val popup_style3_end = "popup_style3_end"
val popup_style3_status = "popup_style3_status"
val popup_style3_count = "popup_style3_count"
val popup_style3_interval = "popup_style3_interval"
//是否展示多语言
val showLanPage = "showLanPage"
//开屏加载ad时间
val open_ad_loading = "open_loading"
//创建pdf加载ad时间
val create_pdf_loading = "create_pdf_loading"
//删除文件
val delete_loading = "delete_loading"
//打开文件
val open_file_loading = "open_file_loading"
//合并pdf
val merge_loading = "merge_loading"
//拆分pdf
val split_loading = "split_loading"
//可请求时间段(由 x 定义)
const val ad_request_period = "ad_request_interval"
//可请求时间段内允许的最大请求数(由 y 定义)
const val ad_period_max_request = "ad_period_max_request"
//可请求时间段间隔时间
const val ad_request_period_interval = "ad_request_period_interval"
fun saveDatabase2Sp() {
add(open_limit_request, "15")
add(open_limit_show, "10")
add(open_limit_click, "1")
add(inter_limit_request, "15")
add(inter_limit_show, "10")
add(inter_limit_click, "1")
add(native_limit_request, "15")
add(native_limit_show, "10")
add(native_limit_click, "1")
add(popup_count, "0")
add(popup_status, "1")
add(popup_style1_start, "7")
add(popup_style1_end, "11")
add(popup_style1_count, "0")
add(popup_style1_status, "1")
add(popup_style1_interval, "120")
add(popup_style2_start, "12")
add(popup_style2_end, "17")
add(popup_style2_count, "0")
add(popup_style2_status, "1")
add(popup_style2_interval, "120")
add(popup_style3_start, "18")
add(popup_style3_end, "24")
add(popup_style3_count, "0")
add(popup_style3_status, "1")
add(popup_style3_interval, "120")
add(showLanPage, "1")
add(open_ad_loading, "8000")
add(create_pdf_loading, "8000")
add(delete_loading, "8000")
add(open_file_loading, "8000")
add(merge_loading, "8000")
add(split_loading, "8000")
add(ad_request_period, "1")
add(ad_period_max_request, "10")
add(ad_request_period_interval, "60")
rootRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (snapshot in dataSnapshot.getChildren()) {
val key1 = snapshot.key
val value1 = snapshot.value
LogEx.logDebug("Database", "Key: $key1, Value: $value1")
}
}
override fun onCancelled(databaseError: DatabaseError) {
LogEx.logDebug("Database", "onCancelled")
}
})
}
fun add(ref: String, value: String) {
database.getReference(ref).setValue(value)
}
}
\ No newline at end of file
package com.base.pdfviewerscannerwhite.fcm;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import com.base.pdfviewerscannerwhite.helper.EventUtils;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.messaging.FirebaseMessaging;
public class FCMManager {
public static void initFirebase(Context context) {
FirebaseApp.initializeApp(context);
}
public static void subscribeToTopic(String topic) {
FirebaseMessaging.getInstance().subscribeToTopic(topic)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d("FCMUtil", "suc:" + topic);
EventUtils.INSTANCE.event("FCM_Topic_" + topic, null, null, false);
} else {
Log.d("FCMUtil", "fail");
}
}
});
}
public static void unsubscribeFromTopic(String topic) {
FirebaseMessaging.getInstance().unsubscribeFromTopic(topic)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
} else {
}
}
});
}
}
package com.base.pdfviewerscannerwhite.fcm;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.base.pdfviewerscannerwhite.utils.LogEx;
public class FcmReceiver extends BroadcastReceiver {
private String TAG = "FcmReceiver";
@Override
public void onReceive(Context context, Intent intent) {
LogEx.INSTANCE.logDebug(TAG, "onReceive", false);
}
}
package com.base.pdfviewerscannerwhite.fcm;
import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import com.base.pdfviewerscannerwhite.helper.EventUtils;
import com.base.pdfviewerscannerwhite.utils.LogEx;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
@SuppressLint("MissingFirebaseInstanceTokenRefresh")
public class MessagingService extends FirebaseMessagingService {
private static final String TAG = "MessagingService";
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
LogEx.INSTANCE.logDebug(TAG, "onMessageReceived", false);
EventUtils.INSTANCE.event("FCM_Received", null, null, false);
}
}
\ No newline at end of file
......@@ -6,7 +6,7 @@ object ConfigHelper {
const val termService: String = "https://sites.google.com/view/term-of-service-s/term-of-service"
// 正式包名
const val packageName = "com.lol.pdfscanner.libstdc.chovey"
const val packageName = "com.ttesst.gododo.redause"
// 域名
const val eventUrl = "https://rp.gamexzonerk.xyz"
......
......@@ -2,8 +2,10 @@ package com.base.pdfviewerscannerwhite.helper
import android.app.Application
import android.text.TextUtils
import com.base.pdfviewerscannerwhite.fcm.FCMManager
import com.base.pdfviewerscannerwhite.utils.AppPreferences
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.facebook.FacebookSdk
import com.tom_roush.pdfbox.android.PDFBoxResourceLoader
import java.util.UUID
......@@ -42,6 +44,11 @@ class MyApplication : Application() {
}
fun initApp() {
FacebookSdk.sdkInitialize(applicationContext)
val topic = ConfigHelper.packageName + "_push"
LogEx.logDebug(TAG, "topic=${topic}")
FCMManager.initFirebase(this)
FCMManager.subscribeToTopic(topic)
}
......
package com.base.pdfviewerscannerwhite.service
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.Service
import android.content.Context
import android.content.Intent
import android.content.pm.ServiceInfo
import android.graphics.BitmapFactory
import android.os.Build
import android.os.IBinder
import android.widget.RemoteViews
import androidx.core.app.NotificationCompat
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.helper.EventUtils
import com.base.pdfviewerscannerwhite.ui.splash.SplashActivity
import kotlin.random.Random
/**
* 常驻通知栏
*/
class StayNotificationService : Service() {
private val TAG = "StayNotificationService"
companion object {
var isRunning = false
fun Context.startStayNotification() {
val intent = Intent(this, StayNotificationService::class.java)
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU) {
return
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
startService(intent)
}
// StayServiceTimerManager.getInstance().scheduleTask(60000L, 60000L)
}
fun Context.restartStartStayNotification() {
val intent = Intent(this, StayNotificationService::class.java)
stopService(intent)
startStayNotification()
}
fun createPermanentNotification(context: Context): Notification {
val isOngoing = true //是否持续(为不消失的常驻通知)
val channelName = "File Recovery Foreground Service Channel"
val channelId = "File_Recovery_Service_Id"
val category = Notification.CATEGORY_SERVICE
val contentView = RemoteViews(context.packageName, R.layout.stay_notification_big)
val expendView = RemoteViews(context.packageName, R.layout.stay_notification_big)
val requestCode1 = Random.nextInt(1800)
val intent0 = Intent(context, SplashActivity::class.java).apply {
}
// val pendingIntent1 =
// PendingIntent.getActivity(
// context,
// requestCode1,
// intent0,
// PendingIntent.FLAG_IMMUTABLE
// )
//
// val requestCode2 = Random.nextInt(1800)
// val intent2 = Intent(context, Splash2Activity::class.java).apply {
// putExtra("actionId", ConstObject.ID_NEWS)
// }
// val pendingIntent2 =
// PendingIntent.getActivity(
// context,
// requestCode2,
// intent2,
// PendingIntent.FLAG_IMMUTABLE
// )
// contentView.setOnClickPendingIntent(R.id.ll_2, pendingIntent2)
// expendView.setOnClickPendingIntent(R.id.ll_2, pendingIntent2)
//
// val requestCode3 = Random.nextInt(1800)
// val intent3 = Intent(context, Splash2Activity::class.java).apply {
// putExtra("actionId", ConstObject.ID_SCAN_CODE)
// }
// val pendingIntent3 =
// PendingIntent.getActivity(
// context,
// requestCode3,
// intent3,
// PendingIntent.FLAG_IMMUTABLE
// )
// contentView.setOnClickPendingIntent(R.id.ll_3, pendingIntent3)
// expendView.setOnClickPendingIntent(R.id.ll_3, pendingIntent3)
//
//
// val requestCode4 = Random.nextInt(1800)
// val intent4 = Intent(context, Splash2Activity::class.java).apply {
// putExtra("actionId", ConstObject.ID_APP_PROCESS_1)
// }
// val pendingIntent4 =
// PendingIntent.getActivity(
// context,
// requestCode4,
// intent4,
// PendingIntent.FLAG_IMMUTABLE
// )
// contentView.setOnClickPendingIntent(R.id.ll_4, pendingIntent4)
// expendView.setOnClickPendingIntent(R.id.ll_4, pendingIntent4)
//
// val nfIntent = Intent(context, MainActivity::class.java)
// val pendingIntent =
// PendingIntent.getActivity(context, 0, nfIntent, PendingIntent.FLAG_IMMUTABLE)
//
val builder = NotificationCompat.Builder(context, channelId)
//
// val smallIcon = IconCompat.createFromIcon(
// context, Icon.createWithResource(
// MyApplication.context, R.mipmap.logo_notification_small
// )
// )
// smallIcon?.let {
// builder.setSmallIcon(smallIcon) //设置状态栏内的小图标
// }
builder.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.logo))
builder.setContentTitle(context.resources.getString(R.string.app_name))
// builder.setContentIntent(pendingIntent) //设置PendingIntent
builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE) //设置通知公开可见
builder.setAutoCancel(false)
builder.setPriority(NotificationCompat.PRIORITY_MAX) //优先级为:重要通知
builder.setWhen(System.currentTimeMillis())
builder.setCustomContentView(contentView)
builder.setCustomBigContentView(expendView)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel =
NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_LOW)
channel.lockscreenVisibility = 1
val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
builder.setChannelId(channelId)
}
return builder.build()
}
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
if (intent == null) {
EventUtils.event("onStartCommand", "Foreground System auto launch intent=null isRunning=$isRunning")
return START_NOT_STICKY
}
if (!isRunning) {
startForeground()
isRunning = true
}
return START_STICKY
}
private fun startForeground() {
val notification = createPermanentNotification(applicationContext)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
startForeground(100, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
} else {
startForeground(100, notification)
}
isRunning = true
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onDestroy() {
isRunning = false
super.onDestroy()
}
}
\ No newline at end of file
......@@ -10,6 +10,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.ads.FirebaseDatabase
import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
......@@ -57,6 +58,9 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
LogEx.logDebug(TAG, "initView")
mainPresenter = MainPresenter(this, this, lifecycleScope)
mainPresenter.initScannerLauncher(this)
FirebaseDatabase.saveDatabase2Sp()
}
override fun onResume() {
......
......@@ -29,7 +29,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Feedback"
android:text="@string/feedback"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
......@@ -65,7 +65,7 @@
android:background="@drawable/bg_selector_btn"
android:enabled="false"
android:gravity="center"
android:text="Send"
android:text="@string/send"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
......
......@@ -58,7 +58,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="Document"
android:text="@string/document"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
......@@ -273,7 +273,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="document"
android:text="@string/document"
android:textColor="@color/color_tab_selector"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......
......@@ -61,7 +61,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="document"
android:text="@string/document"
android:textColor="@color/color_tab_selector"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......@@ -95,7 +95,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="Recent"
android:text="@string/recent"
android:textColor="@color/color_tab_selector"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......@@ -129,7 +129,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="Bookmark"
android:text="@string/bookmark"
android:textColor="@color/color_tab_selector"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......@@ -164,7 +164,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="Tool"
android:text="@string/tool"
android:textColor="@color/color_tab_selector"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......@@ -199,7 +199,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="Delete"
android:text="@string/delete"
android:textColor="#333333"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......@@ -234,7 +234,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2.5dp"
android:text="Share"
android:text="@string/share"
android:textColor="#333333"
android:textSize="11sp"
tools:ignore="HardcodedText" />
......
......@@ -151,7 +151,7 @@
android:layout_height="36dp"
android:background="@drawable/bg_00b8de_10"
android:gravity="center"
android:text="Save"
android:text="@string/save"
android:textColor="@color/white"
android:textSize="16sp"
android:visibility="gone"
......@@ -238,7 +238,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="6dp"
android:text="Highlight"
android:text="@string/highlight"
android:textColor="#232323"
android:textSize="12sp"
tools:ignore="HardcodedText" />
......@@ -268,7 +268,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="6dp"
android:text="Glide Line"
android:text="@string/glide_line"
android:textColor="#232323"
android:textSize="12sp"
tools:ignore="HardcodedText" />
......
......@@ -35,7 +35,7 @@
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="Merge PDF"
android:text="@string/merge_pdf"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
......@@ -49,7 +49,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:text="Add"
android:text="@string/add"
android:textColor="#00B8DE"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
......@@ -83,7 +83,7 @@
android:background="@drawable/bg_selector_btn"
android:enabled="false"
android:gravity="center"
android:text="Merge"
android:text="@string/merge"
android:textColor="@color/white"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
......
......@@ -79,7 +79,7 @@
android:background="@drawable/bg_selector_btn"
android:enabled="false"
android:gravity="center"
android:text="Next"
android:text="@string/next"
android:textColor="@color/white"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
......
......@@ -102,7 +102,7 @@
android:ellipsize="end"
android:includeFontPadding="false"
android:singleLine="true"
android:text="Rename"
android:text="@string/rename"
android:textColor="#333333"
android:textSize="16sp"
tools:ignore="HardcodedText" />
......
......@@ -102,7 +102,7 @@
android:ellipsize="end"
android:includeFontPadding="false"
android:singleLine="true"
android:text="Rename"
android:text="@string/rename"
android:textColor="#333333"
android:textSize="16sp"
tools:ignore="HardcodedText" />
......@@ -141,7 +141,7 @@
android:ellipsize="end"
android:includeFontPadding="false"
android:singleLine="true"
android:text="Merge PDF"
android:text="@string/merge_pdf"
android:textColor="#333333"
android:textSize="16sp"
tools:ignore="HardcodedText" />
......@@ -180,7 +180,7 @@
android:ellipsize="end"
android:includeFontPadding="false"
android:singleLine="true"
android:text="Split PDF"
android:text="@string/split_pdf"
android:textColor="#333333"
android:textSize="16sp"
tools:ignore="HardcodedText" />
......
......@@ -61,7 +61,7 @@
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:includeFontPadding="false"
android:text="Merge PDF"
android:text="@string/merge_pdf"
android:textColor="#333333"
android:textSize="14sp"
tools:ignore="HardcodedText" />
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="DisableBaselineAlignment">
<TextView
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#FA957B"
android:gravity="center"
android:text="测试" />
</LinearLayout>
\ No newline at end of file
......@@ -4,34 +4,21 @@
<string name="previous" tools:ignore="MissingTranslation">Previous</string>
<string name="facebook_app_id" tools:ignore="MissingTranslation">421266364258459</string>
<string name="lorem_ipsum" tools:ignore="MissingTranslation">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id interdum
ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales nisi, vel dictum dolor.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend diam,
vel rutrum tellus vulputate quis. Aliquam eget libero aliquet, imperdiet nisl a, ornare ex. Sed rhoncus est ut libero porta
lobortis. Fusce in dictum tellus.\n\n
Suspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus egestas, est a condimentum egestas,
turpis nisl iaculis ipsum, in dictum tellus dolor sed neque. Morbi tellus erat, dapibus ut sem a, iaculis tincidunt dui.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Curabitur et eros porttitor, ultricies urna vitae, molestie nibh.
Phasellus at commodo eros, non aliquet metus. Sed maximus nisl nec dolor bibendum, vel congue leo egestas.\n\n
Sed interdum tortor nibh, in sagittis risus mollis quis. Curabitur mi odio, condimentum sit amet auctor at, mollis non turpis.
Nullam pretium libero vestibulum, finibus orci vel, molestie quam. Fusce blandit tincidunt nulla, quis sollicitudin libero
facilisis et. Integer interdum nunc ligula, et fermentum metus hendrerit id. Vestibulum lectus felis, dictum at lacinia sit
amet, tristique id quam. Cras eu consequat dui. Suspendisse sodales nunc ligula, in lobortis sem porta sed. Integer id ultrices
magna, in luctus elit. Sed a pellentesque est.\n\n
Aenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh. Morbi laoreet, tortor sed facilisis
varius, nibh orci rhoncus nulla, id elementum leo dui non lorem. Nam mollis ipsum quis auctor varius. Quisque elementum eu
libero sed commodo. In eros nisl, imperdiet vel imperdiet et, scelerisque a mauris. Pellentesque varius ex nunc, quis imperdiet
eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non viverra ipsum. Nunc quis augue egestas, cursus lorem at,
molestie sem. Morbi a consectetur ipsum, a placerat diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet
finibus convallis.\n\n
Phasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In
volutpat arcu ut felis sagittis, in finibus massa gravida. Pellentesque id tellus orci. Integer dictum, lorem sed efficitur
ullamcorper, libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec maximus ullamcorper sodales. Praesent bibendum
rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus libero vel nunc consequat, quis tincidunt nisl eleifend. Cras
bibendum enim a justo luctus vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim.
</string>
<string name="merge_pdf">Merge PDF</string>
<string name="document">document</string>
<string name="add">Add</string>
<string name="recent">Recent</string>
<string name="rename">Rename</string>
<string name="bookmark">Bookmark</string>
<string name="merge">Merge</string>
<string name="feedback">Feedback</string>
<string name="tool">Tool</string>
<string name="delete">Delete</string>
<string name="share">Share</string>
<string name="save">Save</string>
<string name="highlight">Highlight</string>
<string name="glide_line">Glide Line</string>
<string name="split_pdf">Split PDF</string>
<string name="send">Send</string>
</resources>
\ No newline at end of file
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