diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f15509..a785cf2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -8,52 +8,65 @@ - - - - - + tools:targetApi="31"> + android:theme="@style/Theme.AICEmu"> + - - + + + + + + + + + + + + + android:permission="android.permission.BIND_NFC_SERVICE"> @@ -61,6 +74,5 @@ android:name="android.nfc.cardemulation.host_nfcf_service" android:resource="@xml/host_nfcf_service" /> - \ No newline at end of file diff --git a/app/src/main/java/moe/tqlwsl/aicemu/ApduService.kt b/app/src/main/java/moe/tqlwsl/aicemu/ApduService.kt new file mode 100644 index 0000000..0809bd1 --- /dev/null +++ b/app/src/main/java/moe/tqlwsl/aicemu/ApduService.kt @@ -0,0 +1,16 @@ +package moe.tqlwsl.aicemu + +import android.nfc.cardemulation.HostApduService +import android.os.Bundle + + +class ApduService : HostApduService() { + override fun onDeactivated(reason: Int) { + // placeholder + } + + override fun processCommandApdu(commandApdu: ByteArray, extras: Bundle): ByteArray { + // placeholder + return ByteArray(0) + } +} \ No newline at end of file diff --git a/app/src/main/java/moe/tqlwsl/aicemu/MainActivity.kt b/app/src/main/java/moe/tqlwsl/aicemu/MainActivity.kt index db4709d..aa7f923 100644 --- a/app/src/main/java/moe/tqlwsl/aicemu/MainActivity.kt +++ b/app/src/main/java/moe/tqlwsl/aicemu/MainActivity.kt @@ -4,6 +4,7 @@ import android.app.AlertDialog import android.app.PendingIntent import android.content.* import android.nfc.NfcAdapter +import android.nfc.cardemulation.CardEmulation import android.nfc.cardemulation.NfcFCardEmulation import android.os.Bundle import android.util.Log @@ -12,16 +13,14 @@ import android.widget.* import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar import androidx.cardview.widget.CardView -import androidx.core.content.edit import androidx.core.view.WindowCompat import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.gson.Gson import com.google.gson.JsonSyntaxException import com.google.gson.reflect.TypeToken +import moe.tqlwsl.aicemu.databinding.ActivityMainBinding import java.io.File import java.io.IOException -import moe.tqlwsl.aicemu.databinding.ActivityMainBinding - internal data class Card(val name: String, val idm: String) @@ -83,6 +82,18 @@ class MainActivity : AppCompatActivity() { return } + // set default payment app + var cardEmulation = CardEmulation.getInstance(nfcAdapter) + val componentName = ComponentName(applicationContext, ApduService::class.java) + val isDefault = + cardEmulation.isDefaultServiceForCategory(componentName, CardEmulation.CATEGORY_PAYMENT) + if (!isDefault) { + val intent = Intent(CardEmulation.ACTION_CHANGE_DEFAULT) + intent.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT) + intent.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, componentName) + startActivity(intent) + } + // add pendingintent in order not to read tag at home val intent = Intent(this, javaClass).apply { addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) @@ -98,7 +109,7 @@ class MainActivity : AppCompatActivity() { ) // setting prefs - prefs = applicationContext.getSharedPreferences("AICEmu", MODE_PRIVATE) + prefs = applicationContext.getSharedPreferences("AICEmu", Context.MODE_WORLD_READABLE) currentCardId = prefs.getInt("currentCardId", -1) compatibleID = prefs.getBoolean("compatibleID", false) val compatibleButton: Button = findViewById(R.id.button_compatible) @@ -176,7 +187,7 @@ class MainActivity : AppCompatActivity() { true } R.id.toolbar_menu_settings -> { - Toast.makeText(applicationContext, "还没做完()\nUnder constuction...", Toast.LENGTH_LONG).show() + // Toast.makeText(applicationContext, "还没做完()\nUnder constuction...", Toast.LENGTH_LONG).show() val settingIntent = Intent(this, SettingActivity::class.java) startActivity(settingIntent) true diff --git a/app/src/main/res/xml/apdu_service.xml b/app/src/main/res/xml/apdu_service.xml new file mode 100644 index 0000000..9d682b4 --- /dev/null +++ b/app/src/main/res/xml/apdu_service.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file