'I can't detect the bug

This is a read/scan NFC code.

I'm trying it out and I need it to work so that I would write my own code for another read activity.

The app keeps on crashing and the error is always, "There's a bug, please fix it for the app to start."

The source video/code was this link https://www.youtube.com/watch?v=QzphwRdJ7r0

Main Activity

package com.example.nfcreadscan;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentFilter;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Parcelable;
import android.widget.TextView;

import java.util.Arrays;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private IntentFilter[] readfilters;
    private PendingIntent pendingintent;

    @SuppressLint("UnspecifiedImmutableFlag")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text);



        try {
            Intent intent = new Intent (this, getClass());
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

            pendingintent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            IntentFilter jdf = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
            jdf.addDataScheme("http");
            jdf.addDataAuthority("javadude.com", null);
            IntentFilter jdt = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED,"text/plain");
            readfilters = new IntentFilter[]{jdf, jdt};

        } catch (IntentFilter.MalformedMimeTypeException e) {
            e.printStackTrace();
        }
        processNFC(getIntent());
    }

    private void enableRead(){
        NfcAdapter.getDefaultAdapter(this).enableForegroundDispatch(this,pendingintent, readfilters,null);
    }

    private void disableRead(){
        NfcAdapter.getDefaultAdapter(this).disableForegroundDispatch(this);
    }
    @Override
    protected void onResume(){
        super.onResume();
        enableRead();
    }

    @Override
    protected void onPause(){
        super.onPause();
        disableRead();
    }

    @Override
    protected void onNewIntent(Intent intent){
        super.onNewIntent(intent);
        processNFC(intent);
    }
    private void processNFC(Intent intent){
        Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        textView.setText("");
        if(messages != null){
            for(Parcelable message : messages){
                NdefMessage ndefMessage = (NdefMessage) message;
                for(NdefRecord record : ndefMessage.getRecords()) {
                    if (record.getTnf() == NdefRecord.TNF_WELL_KNOWN) {
                        textView.append("well known: ");
                        if (Arrays.equals(record.getType(), NdefRecord.RTD_TEXT)) {
                            textView.append("text: ");
                            textView.append(new String(record.getPayload()));
                            textView.append("\n");

                        } else if (Arrays.equals(record.getType(), NdefRecord.RTD_URI)) {
                            textView.append("uri");
                            textView.append(new String(record.getPayload()));
                            textView.append("\n");

                        }
                    }
                }
            }
        }


    }
}

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nfcreadscan">
    <uses-permission android:name="android.permission.NFC"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Nfcreadscan">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <action android:name="android.intent.action.NDEF_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source