2015-04-11 3 views
0

Я хочу, чтобы мое приложение, чтобы знать, когда телефон звонит, поэтому я добавил следующее разрешение в соответствии с просьбой:Android - Scary разрешения знать, когда звонит телефон

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

Но при установке его на устройстве для тестирования, его говорит «Прочитайте состояние телефона и личность» - теперь вы скажите мне, какой пользователь захочет подтвердить это разрешение (для приложения, не связанного с идентификатором)? :) Я только хочу знать, если/когда телефон звонит, но пользователь может подумать, что я за его личностью и не установлю его. Каков ваш опыт в этом? Как это обойти?

Я использую BroadcastReceiver для этого:

<receiver android:name="CheckIncomingNumber"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 

и

public class CheckIncomingNumber extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     if (!state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
      return; 
     String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
     Utils.logToFile("incoming number: " + number); 
    } 
} 
+2

"_Any way around this? _" No. – JonasCz

+2

Причина в терминологии заключается в том, что 'READ_PHONE_STATE' также позволяет получить доступ к значениям IMEI и IMSI (на устройствах GSM и, предположительно, их эквивалентах на устройствах CDMA). Уже есть дюжины, возможно, сотни разрешений, но они не допускают произвольной детализации. Вы можете рассмотреть вопрос об изменении своего вопроса, чтобы объяснить, почему вы хотите, чтобы ваше приложение узнало, когда звонит телефон, и что вы планируете делать в то время, а также то, как вы это реализуете сегодня. Вы вряд ли получите «любой путь вокруг этого» без такого уровня детализации, поэтому кто-то может предложить альтернативу. – CommonsWare

+0

Забавный, мой вопрос в том, как снизить уровень вторжения, который у меня есть по телефону, потому что мне не нужно такое вторжение, и все же вы задали вопрос, как будто мои намерения плохие :) Во всяком случае, пользователь выбирает разные контакты, которые приложение будет делать что-то для них, когда они звонят, поэтому мне нужно знать, является ли входящий номер телефона одним из выбранных номеров телефонов. На данный момент я ничего не делаю, кроме как записывать эти цифры, потому что я все еще на стадии разработки, и я хочу посмотреть, что я получу в таких случаях. – Amos

ответ

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