【发布时间】:2015-01-21 09:20:31
【问题描述】:
我正在写一个相机应用程序,当手机读取NFC标签时,它会拍照
我用这个例子
https://github.com/josnidhin/Android-Camera-Example
然后修改
1在CamTestActivity中添加两个属性
PendingIntent pendingIntent;
Tag tag;
2 在 onCreate 中添加这个
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
3 在 onPause 中添加这个
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.disableForegroundDispatch(this);
4 onResume
Log.v("new intent","resume");
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null);
5 然后添加一个新方法
@Override
protected void onNewIntent(Intent intent) {
Log.v("new intent","new intent");
//preview.performClick();
}
但它不起作用
当它读取一个 NFC 标签时,它会调用 pause、new intent、resume。它关闭活动并重新开始,但这次它运行 onNewIntent 而不是 new onCreate
我尝试了很多标志,但没有人可以将活动保持在前台
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0);
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK), 0);
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT), 0);
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FILL_IN_ACTION), 0);
pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK), 0);
我在play store找到了一个叫“NFC Camera”的App,它可以读取NFC tag而不需要重启activity,怎么做?
【问题讨论】:
-
试试这个你可以再次进行相同的活动
mNfcPendingIntent = PendingIntent.getActivity(CamTestActivits.this, 0, new Intent(CamTestActivity.this, CamTestActivity.class).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); -
使用这个,它会调用:onPause > onCreate > onResume,所以还是会重启activity,而且这次没有调用onNewIntent,我无法通过
tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);获取Tag对象
标签: android android-camera nfc