如何在不打开应用程序的情况下运行android程序?
我的应用程序可以由NFC打开,然后使用标签中的信息进行一些处理,处理时间约为5秒 如果我的应用程序是由NFC打开的,我不希望它显示在屏幕上。这就是onCreate如何在不打开应用程序的情况下运行android程序?,android,nfc,Android,Nfc,我的应用程序可以由NFC打开,然后使用标签中的信息进行一些处理,处理时间约为5秒 如果我的应用程序是由NFC打开的,我不希望它显示在屏幕上。这就是onCreate @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(com.ab.R.layout.test); Intent intent=getInte
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.ab.R.layout.test);
Intent intent=getIntent();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Log.v("nfc", "Start processing");
SystemClock.sleep(5000); // simulate the processing
Log.v("nfc", "End processing");
this.finish();
System.exit(0);
}
}
但它不工作,应用程序将在屏幕上显示约5秒
即使我也不处理任何事情
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
this.finish();
System.exit(0);
}
我仍然可以在很短的时间内看到应用程序屏幕
如果我使用NFC运行应用程序,如何防止该应用程序显示屏幕?将行放在setContentView(com.airbutton.R.layout.test)上在IF中验证是否应显示它。请记住,活动可以在没有UI的情况下存在。将行放在setContentView(com.airbutton.R.layout.test)上在IF中验证是否应显示它。请记住,活动可以在没有UI的情况下存在。如果我没弄错,您希望在应用程序通过NFC启动后立即在后台启动一些操作。关键是,一旦您实际启动应用程序并调用活动的onCreate方法,您的应用程序将进入前台并变得可见 假设您不一定需要启动活动,而是通过NFC启动应用程序中的某个进程,那么最好的解决方案是将应该运行的代码外包,而不将应用程序引入前台的后台服务。将广播接收器设置到您想要了解的NFC事件上。一旦收到通知,该接收者就可以启动您的后台服务 编辑:grexter89是正确的,很抱歉我的提示无法实现。NFC事件提供的意图只能在活动中处理!好吧,我相信这不是你想要的答案,但我猜这个限制是基于一些安全/隐私问题。如果上述方法是可能的,那么一旦用户(可能是意外地)接触到NFC字段,NFC事件就可以在没有用户同意和确认的情况下启动进程。这是您希望用于应用程序的用例,但是,这些情况很容易被误用
关于这些问题,如果你真的想让你的活动隐形,你应该重新思考。考虑到谷歌仅限活动的限制以及上述原因(=>意外激活,缺乏用户意识),我将实施一种方法,通过一个可见的活动,很快向用户显示提示。如果我没弄错,你想在应用程序通过NFC启动后立即在后台启动一些操作。关键是,一旦您实际启动应用程序并调用活动的onCreate方法,您的应用程序将进入前台并变得可见 假设您不一定需要启动活动,而是通过NFC启动应用程序中的某个进程,那么最好的解决方案是将应该运行的代码外包,而不将应用程序引入前台的后台服务。将广播接收器设置到您想要了解的NFC事件上。一旦收到通知,该接收者就可以启动您的后台服务 编辑:grexter89是正确的,很抱歉我的提示无法实现。NFC事件提供的意图只能在活动中处理!好吧,我相信这不是你想要的答案,但我猜这个限制是基于一些安全/隐私问题。如果上述方法是可能的,那么一旦用户(可能是意外地)接触到NFC字段,NFC事件就可以在没有用户同意和确认的情况下启动进程。这是您希望用于应用程序的用例,但是,这些情况很容易被误用
关于这些问题,如果你真的想让你的活动隐形,你应该重新思考。考虑到Google仅限活动的限制以及上述原因(=>意外激活,缺乏用户意识),我将实施一种方法,通过一个可见的活动,很快向用户显示提示。在manifest.xml中,您可以为您的活动指定设置以下主题:
android:theme=“@android:style/theme.transparent.NoTitleBar”
这会使您的活动不可见(如果为空)。在manifest.xml中,您可以为您的活动指定设置以下主题:
android:theme=“@android:style/theme.transparent.NoTitleBar”
这会使您的活动不可见(如果是空的)。据我所知,NFC事件不能由BroadcastReceiver接收,而只能由活动接收。@grexter89正确。NFC标记发现事件只能由活动处理。据我所知,NFC事件不能由BroadcastReceiver接收,只能由活动接收。@grexter89更正。NFC标记发现事件只能由活动处理。然后,您可以在创建()时从此活动的上启动服务。这是工作,但我不能清空活动,因为如果应用程序不是由活动启动的,我必须向用户提供UINFC@CLSo您可以让一个单独的活动(如上图所示设置为不可见)处理NFC事件。然后,您可以在创建()时从此活动的上启动服务。这是工作,但我不能清空该活动,因为如果应用程序未由启动,我必须向用户提供UINFC@CLSo您可以让一个单独的活动(如上图所示设置为不可见)处理NFC事件,但我仍然可以看到应用程序屏幕。尝试将活动主题更改为@android:style/theme.transparent.NoTitleBarI完全删除“setContentView”行,但我仍然可以看到应用程序屏幕。尝试将活动主题更改为@android:style/theme.transparent.NoTitleBar