java - 使用其他类(class)的 NFC Activity

标签 java android android-studio nfc

我为nfc标签创建了一个新类,因为我必须在不同的 Activity 中使用nfc功能。检查 nfc 功能是否可用。我在方法onNewIntentonResume中实现了检测nfc标签的功能。我如何在我的类 OrderActivity.java 或其他 Activity 中使用此函数?期待您的答复。

NFCReaderWriter.java

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.nfc.NfcAdapter;
import android.widget.Toast;

import androidx.appcompat.app.ActionBar;

public class NFCReaderWriter extends Activity {

    private Context context;
    private NfcAdapter nfcAdapter;

    public NFCReaderWriter(Context context) {
        this.context = context;
        nfcAdapter = NfcAdapter.getDefaultAdapter(context);
    }

    /**
     * Checks for nfc functionality
     * @return boolean the status of the functionality
     */
    public boolean checkFunctionality(){
        if(nfcAdapter != null && nfcAdapter.isEnabled()) {
            return true;
        }
        else {
            return false;
        }

    }

    @Override
    protected void onNewIntent(Intent intent) {
        Toast.makeText(context, "NFC intent received", Toast.LENGTH_LONG).show();
        super.onNewIntent(intent);
    }

    @Override
    protected void onResume() {
        Intent intent = new Intent(context, context.getClass());
        intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
        IntentFilter[] intentFilters = new IntentFilter[]{};

        nfcAdapter.enableForegroundDispatch((Activity) context, pendingIntent, intentFilters, null);
        super.onResume();
    }

    @Override
    protected void onPause() {
        nfcAdapter.disableForegroundDispatch((Activity) context);
        super.onPause();
    }
}

OrderActivity.java

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.app.Dialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.common.util.NumberUtils;
import com.google.firebase.auth.FirebaseAuth;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Locale;

import static android.widget.Toast.*;

public class OrderActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order);

        nfcReaderWriter = new NFCReaderWriter(this);
        if(nfcReaderWriter.checkFunctionality()) {
            System.out.println("works");
        }
        else {
            System.out.println("no nfc");
        }    
    }     
}

最佳答案

这听起来像是一个标准的 Java 继承问题。

我认为以下应该有效:-

改变

公共(public)类 NFCReaderWriter 扩展 Activity {

公共(public)类 NFCReaderWriter 扩展 AppCompatActivity {

然后改变

公共(public)类 OrderActivity 扩展 AppCompatActivity {

公共(public)类 OrderActivity 扩展了 NFCReaderWriter {

关于java - 使用其他类(class)的 NFC Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61633067/

相关文章:

java - 在 Android 中查找并暂停播放音频的任务

java - soap:address 位置属性 - 最佳实践

Java动态类型如何?

Android:拦截来自 WebView 的 AJAX 调用

java - 无法运行 ./gradlew connectedInstrumentTest

java - 使用 Jersey 客户端的 HTTPS

java - 帮助使用 Spring 创建图像 servlet

android - 将外部库添加到 Qt-Android 项目中

android-studio - 无法运行 'Pub get'并且无法构建Flutter项目

android-studio - 如何在 M1 Mac 上运行 Android Studio 模拟器?