我为nfc标签创建了一个新类,因为我必须在不同的 Activity 中使用nfc功能。检查 nfc 功能是否可用。我在方法onNewIntent
和onResume
中实现了检测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/