2012-07-04 2 views
0

Я пытаюсь активировать или деактивировать функцию Android Beam программно на ICS, но я не могу найти ни одного api для этого. Является ли это возможным ?Android Beam - активировать программно

И я бы знал, включена ли функция Android Beam перед началом операции push. Является ли это возможным ?

ответ

2

В настройках телефона вы можете включить и отключить функцию Android Beam (беспроводные сети -> Подробнее ... -> Android Beam). У обычных приложений нет необходимых разрешений для включения или выключения этого (и API отсутствует). Вы можете, однако, отправить и намерение из своего приложения, чтобы открыть этот экран настроек напрямую, используя new Intent(Settings.ACTION_WIRELESS_SETTINGS).

В Android 4.1 JB был добавлен новый вызов API, NfcAdapter.isNdefPushEnabled(), чтобы проверить, включен или выключен Android Beam.

BTW: Даже если Android Beam отключен, ваше устройство будет по-прежнему получать сообщения Beam, пока NFC включен.

+1

Используйте 'новые Intent (Settings.ACTION_NFCSHARING_SETTINGS)' для привлечения пользователя к Настройки Android Beam. Тот, который предлагает парень NFC, приведет вас к настройкам NFC (что также полезно). – Dennis

0

Вы можете выбрать, какой экран настроек выбрать на основе версии Android и текущего состояния. Вот как я это сделал:

import android.annotation.TargetApi; 
import android.app.Activity; 
import android.content.Intent; 
import android.nfc.NfcAdapter; 
import android.os.Build; 
import android.os.Bundle; 
import android.provider.Settings; 

@TargetApi(14) 
// aka Android 4.0 aka Ice Cream Sandwich 
public class NfcNotEnabledActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final Intent intent = new Intent(); 
     if (Build.VERSION.SDK_INT >= 16) { 
      /* 
      * ACTION_NFC_SETTINGS was added in 4.1 aka Jelly Bean MR1 as a 
      * separate thing from ACTION_NFCSHARING_SETTINGS. It is now 
      * possible to have NFC enabled, but not "Android Beam", which is 
      * needed for NDEF. Therefore, we detect the current state of NFC, 
      * and steer the user accordingly. 
      */ 
      if (NfcAdapter.getDefaultAdapter(this).isEnabled()) 
       intent.setAction(Settings.ACTION_NFCSHARING_SETTINGS); 
      else 
       intent.setAction(Settings.ACTION_NFC_SETTINGS); 
     } else if (Build.VERSION.SDK_INT >= 14) { 
      // this API was added in 4.0 aka Ice Cream Sandwich 
      intent.setAction(Settings.ACTION_NFCSHARING_SETTINGS); 
     } else { 
      // no NFC support, so nothing to do here 
      finish(); 
      return; 
     } 
     startActivity(intent); 
     finish(); 
    } 
} 

(Настоящим я поставить этот код в общественное достояние, не условия лицензии или присвоение необходимости)

Смежные вопросы