使用其他班级的NFC活动

问题描述 投票:0回答:1

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

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 android android-studio nfc
1个回答
0
投票

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

我认为下面的方法应该可行:-

改变

public class NFCReaderWriter extends Activity {

public class NFCReaderWriter extends AppCompatActivity {

再改

public class OrderActivity extends AppCompatActivity {

public class OrderActivity extends NFCReaderWriter {

© www.soinside.com 2019 - 2024. All rights reserved.