package com.example.nfc;
import androidx.appcompat.app.AppCompatActivity;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.pm.InstallSourceInfo;
import android.nfc.FormatException;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private Button button;
private String mPackageName;
private NfcAdapter mNfcadapter;
private PendingIntent mPendingIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//拿到button
button = findViewById(R.id.button);
//get到NFC
mNfcadapter = NfcAdapter.getDefaultAdapter(this);
//对mPendingIntent赋值
mPendingIntent = PendingIntent.getActivity(this,0,new Intent(),0);
//设置点击事件,跳转到
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), installedAppListActivity.class);
startActivityForResult(intent, 0);
// Intent intent = new Intent();
// intent = intent.setClass(AccountActity.this, HelpActivity.class);
// startActivity(intent);
}
});
}
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if(mPackageName == null){
return;
}
Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
writeNFCTag(detectedTag);
}
private void writeNFCTag(Tag tag) {
if(tag == null){
return;
}
NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{NdefRecord.createApplicationRecord(mPackageName)});
int size = ndefMessage.toByteArray().length;
try {
Ndef ndef = Ndef.get(tag);
if (ndef != null){
ndef.connect();
if (!ndef.isWritable()){
return;
}
if(ndef.getMaxSize() < size){
return;
}
ndef.writeNdefMessage(ndefMessage);
Toast.makeText(this,"写入成功",Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1){
button.setText(data.getExtras().getString("package_name"));
String temp = button.getText().toString();
mPackageName = temp.substring(temp.indexOf("\n") + 1);
}
}
}
这里对mPendingIntent赋值是赋谁的值啊