我为nfc标签创建了一个新类,因为我必须在不同的活动中使用nfc函数。检查nfc功能是否可用。我在方法onNewIntent
和onResume
中实现了检测nfc标签的功能。如何在班级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");
}
}
}
答案 0 :(得分:0)
这听起来像是标准的Java继承问题。
我认为以下方法应该有效:-
更改
public class NFCReaderWriter extends Activity {
到
public class NFCReaderWriter extends AppCompatActivity {
然后更改
public class OrderActivity extends AppCompatActivity {
到
public class OrderActivity extends NFCReaderWriter {