2013-12-18 4 views
0

Refactored мое простое приложение для набора и переехал мой пользовательский класс «ServiceReceiver», так что вложен в моем главном классе, как это (частичный код, показывающий только вложенный класс ServiceReceiver)Android-вложенная класса и файл манифеста

public class Main extends Activity implements OnClickListener{ 


    public class ServiceReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(final Context context, Intent intent) { 
      TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
      telephony.listen(new PhoneStateListener(){ 
       @Override 
       public void onCallStateChanged(int state, String incomingNumber) { 
        super.onCallStateChanged(state, incomingNumber); 
        Log.d("foo","incomingNumber : "+incomingNumber); 

        EditText incomingNum = (EditText) findViewById(R.id.inputText); 

        incomingNum.setText(incomingNumber); 

       } 
      },PhoneStateListener.LISTEN_CALL_STATE); 
     } 
    } 

Мои вопрос, после этого, какие изменения необходимо внести в manifest.xml?

Вот мой существующий (старый) файл манифеста, когда ServiceReceiver был в отдельном файле, class, а не вложенном.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.foo" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="19" 
     android:targetSdkVersion="19" /> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.foo.Main" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

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

</manifest> 

ответ

0

ли вы попробовать что-то вроде этого:

<receiver android:name="com.example.foo.Main$ServiceReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
</receiver> 

и сделать класс Receiver как статические

+0

Когда я пытаюсь сделать вложенную ServiceReceiver статическими получить ошибку Не удается сделать статическую ссылку к не -статический метод findViewById из типа Activity –

+0

Работает ли он без статического? – Manjunath

+0

Но если я опускаю статическую информацию, она компилируется, и я получаю следующую ошибку времени выполнения: Невозможно создать экземпляр приемника, Невозможно создать экземпляр; нет пустого конструктора –

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