1

私はAndroid開発にはとても新しいです。私は自分のアプリを動かすことに問題があります。私は、BroadcastReceiverを使用して着信通知のトーストを取得しようとしています。しかし、マニフェストからこのエラーが発生していますcom.sortinousn.Salesforce.calltrackerはandroid.app.Activityに割り当てられません。メインアクティビティは割り当てられません。アンドロイド.app.Activityエラー

のAndroidManifest.xml

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

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.sortinousn.salesforcecalltracker.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

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


</application> 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

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

</manifest> 

MainActivity

public class MainActivity extends BroadcastReceiver { 

Context pcontext; 

public void onReceive(Context context, Intent intent) { 

    try { 
     // TELEPHONY MANAGER class object to register one listner 
     TelephonyManager tmgr = (TelephonyManager) context 
       .getSystemService(Context.TELEPHONY_SERVICE); 

     //Create Listner 
     MyPhoneStateListener PhoneListener = new MyPhoneStateListener(); 

     // Register listener for LISTEN_CALL_STATE 
     tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE); 

    } catch (Exception e) { 
     Log.e("Phone Receive Error", " " + e); 
    } 

} 

private class MyPhoneStateListener extends PhoneStateListener { 

    public void onCallStateChanged(int state, String incomingNumber) { 

     Log.d("MyPhoneListener",state+" incoming no:"+incomingNumber); 

     if (state == 1) { 

      String msg = "New Phone Call Event. Incomming Number :  "+incomingNumber; 
      int duration = Toast.LENGTH_LONG; 
      Toast toast = Toast.makeText(pcontext, msg, duration); 
      toast.show(); 

     } 
    } 
} 
} 
+0

マニフェストのすべてのアクティビティを追加する必要があります。私が間違っていない場合は、あなたのマニフェストにcalltrackerアクティビティを追加していません。 – Smit

+0

'MainActivity'は受信機ですので、' 'タグの' android:name'プロパティに宣言することはできません – Shaishav

答えて

0

あなたがあなたの活動の外にあなたの受信機を作成し、MainActivityにコールバックにこの1を加える必要があり、活動のための受信機を宣言することはできません。

1

MainActivityクラスをactivityreceiverとして配置する理由がわかりません。これらは同じではありません。

BroadcastReceiverをMainActivityクラスに拡張しているため、あなたのコードでわかるように、あなたは... Activity(または他のクラスを拡張して実際のアクティビティを作成するだけです)とちょうどこのように、マニフェストの活動として、このクラスを宣言:Activity

package fr.zwedge.kingwarrior; 

import android.app.*; 
import android.os.Bundle; 

public class Main extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // Tell me if I'm wrong for what's above 
     BroadcastReceiver receiver = new BroadcastReceiver() { 
      public void onReceive(Context context, Intent intent) { 
       try { 
        // TELEPHONY MANAGER class object to register one listner 
        TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 

        //Create Listner 
        MyPhoneStateListener PhoneListener = new MyPhoneStateListener(); 

        // Register listener for LISTEN_CALL_STATE 
        tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE); 

       } catch (Exception e) { 
        Log.e("Phone Receive Error", " " + e); 
       } 
      } 
     } 
    } 
    public /* can't be private here */ class MyPhoneStateListener extends PhoneStateListener { 
     public void onCallStateChanged(int state, String incomingNumber) { 
     Log.d("MyPhoneListener",state+" incoming no:"+incomingNumber); 

     if (state == 1) { 
      String msg = "New Phone Call Event. Incomming Number :  "+incomingNumber; 
      int duration = Toast.LENGTH_LONG; 
      Toast toast = Toast.makeText(pcontext, msg, duration); 
      toast.show(); 
     } 
     } 
    } 

Manifest

<application android:allowBackup="true" 
    android:label="King Warrior" 
    android:icon="@drawable/ic_launch"> 
    <activity android:name=".Main" 
     android:label="What you want" 
     android:icon="@drawable/ic_launch"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

それは、 Darkball60に役立ちます願っています。

==================================

それとも<activity />タグを削除することができますアプリのインターフェースを必要としない場合は、マニフェストで

関連する問題