Convert ImportExportActivity to Kotlin

Refactored `ImportExportActivity` and its corresponding test class from Java to Kotlin. The new implementation uses modern Kotlin idioms and syntax while preserving the original functionality.
This commit is contained in:
amlwin
2025-10-06 11:34:45 +08:00
parent 622ea37554
commit 303b40e572
2 changed files with 387 additions and 358 deletions

View File

@@ -1,69 +1,77 @@
package protect.card_locker;
package protect.card_locker
import static org.junit.Assert.assertEquals;
import static org.robolectric.Shadows.shadowOf;
import android.app.Activity
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.ApplicationInfo
import android.content.pm.ResolveInfo
import android.view.View
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.Shadows.shadowOf
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.view.View;
@RunWith(RobolectricTestRunner::class)
class ImportExportActivityTest {
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class ImportExportActivityTest {
private void registerIntentHandler(String handler) {
private fun registerIntentHandler(handler: String) {
// Add something that will 'handle' the given intent type
PackageManager packageManager = RuntimeEnvironment.application.getPackageManager();
val packageManager = RuntimeEnvironment.application.packageManager
ResolveInfo info = new ResolveInfo();
info.isDefault = true;
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.packageName = "does.not.matter";
info.activityInfo = new ActivityInfo();
info.activityInfo.applicationInfo = applicationInfo;
info.activityInfo.name = "DoesNotMatter";
info.activityInfo.exported = true;
Intent intent = new Intent(handler);
if (handler.equals(Intent.ACTION_GET_CONTENT)) {
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
val info = ResolveInfo().apply {
isDefault = true
activityInfo = ActivityInfo().apply {
applicationInfo = ApplicationInfo().apply {
packageName = "does.not.matter"
}
name = "DoesNotMatter"
exported = true
}
}
shadowOf(packageManager).addResolveInfoForIntent(intent, info);
val intent = Intent(handler)
if (handler == Intent.ACTION_GET_CONTENT) {
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "*/*"
}
shadowOf(packageManager).addResolveInfoForIntent(intent, info)
}
private void checkVisibility(Activity activity, int state, int divider, int title, int message, int button) {
View dividerView = activity.findViewById(divider);
View titleView = activity.findViewById(title);
View messageView = activity.findViewById(message);
View buttonView = activity.findViewById(button);
private fun checkVisibility(
activity: Activity,
state: Int,
divider: Int,
title: Int,
message: Int,
button: Int
) {
val dividerView = activity.findViewById<View>(divider)
val titleView = activity.findViewById<View>(title)
val messageView = activity.findViewById<View>(message)
val buttonView = activity.findViewById<View>(button)
assertEquals(state, dividerView.getVisibility());
assertEquals(state, titleView.getVisibility());
assertEquals(state, messageView.getVisibility());
assertEquals(state, buttonView.getVisibility());
assertEquals(state, dividerView.visibility)
assertEquals(state, titleView.visibility)
assertEquals(state, messageView.visibility)
assertEquals(state, buttonView.visibility)
}
@Test
public void testAllOptionsAvailable() {
registerIntentHandler(Intent.ACTION_PICK);
registerIntentHandler(Intent.ACTION_GET_CONTENT);
fun testAllOptionsAvailable() {
registerIntentHandler(Intent.ACTION_PICK)
registerIntentHandler(Intent.ACTION_GET_CONTENT)
Activity activity = Robolectric.setupActivity(ImportExportActivity.class);
val activity = Robolectric.setupActivity(ImportExportActivity::class.java)
checkVisibility(activity, View.VISIBLE, R.id.dividerImportFilesystem,
R.id.importOptionFilesystemTitle, R.id.importOptionFilesystemExplanation,
R.id.importOptionFilesystemButton);
checkVisibility(
activity, View.VISIBLE, R.id.dividerImportFilesystem,
R.id.importOptionFilesystemTitle, R.id.importOptionFilesystemExplanation,
R.id.importOptionFilesystemButton
)
}
}
}