如何在不打开应用程序的情况下运行android程序?

如何在不打开应用程序的情况下运行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

我的应用程序可以由NFC打开,然后使用标签中的信息进行一些处理,处理时间约为5秒

如果我的应用程序是由NFC打开的,我不希望它显示在屏幕上。这就是onCreate

@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