m0_47028453 2021-06-22 23:48 采纳率: 44.4%
浏览 30
已采纳

用getActivity对mPendingIntent赋值

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赋值是赋谁的值啊

  • 写回答

1条回答 默认 最新

  • 帅次 移动开发领域新星创作者 2021-06-23 10:56
    关注

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,new Intent(this, ServiceActivity.class),0);
    this:context
    第一个0:requestCode 请求码,用于返回数据的处理
    ServiceActivity.class:目标界面
    第二个0:Flag
    更新PendingIntent对象,通过设置Flag的方式
    FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。
    FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。
    FLAG_ONE_SHOT:该PendingIntent只作用一次,如果该PendingIntent对象已经触发过一次,那么下次再获取该PendingIntent并且再触发时,系统将会返回一个SendIntentException,在使用这个标志的时候一定要注意哦。
    FLAG_UPDATE_CURRENT:如果系统中已存在该PendingIntent对象,那么系统将保留该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。这个非常有用,例如之前提到的,我们需要在每次更新之后更新Intent中的Extras数据,达到在不同时机传递给MainActivity不同的参数,实现不同的效果。
    如有帮助,麻烦采纳一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等