2013-04-20 180 views
1

我对启动电话时应用程序崩溃的原因感到十分困惑。应用程序崩溃启动电话

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.callmenew" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.USE_SIP" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

<uses-feature android:name="android.hardware.sip.voip" /> 
<uses-feature android:name="android.hardware.wifi" /> 
<uses-feature android:name="android.hardware.microphone" /> 

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

<application android:label="@string/app_name" android:theme="@style/AppTheme" android:icon="@drawable/appslogo"> 
    <service android:name=".MService"/> 
    <activity android:name=".Login"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".searchcall" android:screenOrientation="portrait"/> 
    <activity android:name=".SoftwarePassionView" android:screenOrientation="portrait"/> 
    <activity android:name=".MainActivity" android:screenOrientation="portrait"/> 
    <activity android:name=".outcall" android:screenOrientation="portrait"/> 
    <receiver android:name=".IncomingCallReceiver" android:label="Call Receiver" android:screenOrientation="portrait"/> 
    <receiver android:name="com.callmenew.MyBroadcastReceiver" android:enabled="true" > 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 

    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
</receiver> 
    <activity android:name=".incomingcallevent" android:screenOrientation="portrait"/> 
    <activity android:name=".city" android:noHistory="true" android:label="City" android:screenOrientation="portrait"/> 
    <activity android:name=".createAd" android:label="Create Your Advertisement" android:screenOrientation="portrait"/> 
    <activity android:name=".rgtrUser1" android:label="Create Your Account" android:screenOrientation="portrait"/> 
</application> 

MyBroadcastreceiver

public class MyBroadcastreceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // Intent startServiceIntent = new Intent(arg0, searchcall.class); 
     // startServiceIntent.putExtra("starts", "starts"); 
     // startServiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     // arg0.startActivity(startServiceIntent); 
     Toast.makeText(arg0.getApplicationContext(), "start", Toast.LENGTH_LONG).show(); 
    } 
} 

为MyService类: -

@Override 
    public void onCreate() { 
     super.onCreate(); 
     Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();  
     Log.i(tag, "Service created..."); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     super.onStartCommand(intent, flags, startId); 
     Toast.makeText(this, "Debug: SyncService onStartCommand", Toast.LENGTH_LONG).show(); 

     SharedPreferences settings = getSharedPreferences("calldata", Context.MODE_PRIVATE); 
     sipAddress = settings.getString("sipAddress", ""); 

     // sipAddress= intent.getStringExtra("sipaddress"); 
     // sipcallid = intent.getStringExtra("sipAddress"); 

     Toast.makeText(MService.this, "sipAddress = "+sipAddress+" sipcallid ="+sipcallid, Toast.LENGTH_LONG).show(); 

     IntentFilter filter2 = new IntentFilter(); 

     filter2.addAction("android.SipDemo.INCOMING_CALL"); 
     callReceiver2 = new IncomingCallReceiver(); 
     this.registerReceiver(callReceiver2, filter2); 

     initializeManager(sipAddress); 

     return START_STICKY; 
    } 

登录猫: -

04-20 16:58:46.179: E/AndroidRuntime(294): FATAL EXCEPTION: main 
04-20 16:58:46.179: E/AndroidRuntime(294): java.lang.RuntimeException: Unable to  instantiate receiver com.callmenew.MyBroadcastReceiver: java.lang.ClassNotFoundException: com.callmenew.MyBroadcastReceiver 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2100) 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1197) 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.os.Looper.loop(Looper.java:137) 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-20 16:58:46.179: E/AndroidRuntime(294): at java.lang.reflect.Method.invokeNative(Native Method) 
04-20 16:58:46.179: E/AndroidRuntime(294): at java.lang.reflect.Method.invoke(Method.java:511) 
04-20 16:58:46.179: E/AndroidRuntime(294): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-20 16:58:46.179: E/AndroidRuntime(294): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-20 16:58:46.179: E/AndroidRuntime(294): at dalvik.system.NativeStart.main(Native Method) 
04-20 16:58:46.179: E/AndroidRuntime(294): Caused by: java.lang.ClassNotFoundException: com.callmenew.MyBroadcastReceiver 
04-20 16:58:46.179: E/AndroidRuntime(294): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
04-20 16:58:46.179: E/AndroidRuntime(294): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
04-20 16:58:46.179: E/AndroidRuntime(294): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
04-20 16:58:46.179: E/AndroidRuntime(294): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2095) 
04-20 16:58:46.179: E/AndroidRuntime(294): ... 10 more 

回答

0

使用以下权限

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

然后声明接收器像

<receiver 
     android:name="com.callmenew.MyBroadcastReceiver" 
     android:enabled="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

然后在的onReceive在代码中我不知道你是否能显示吐司直接出现。如果没有,你可以开始一项服务,并从那里显示敬酒。 (在最后一部分我没有试过这个,所以有人纠正我,如果错了)

+0

我的手。再次崩溃应用。 PLZ看到我的服务类 – user2160008 2013-04-20 11:07:56

+0

而不是arg0.getApplicationContext()使用arg0 – stinepike 2013-04-20 11:09:42

+0

thx m检查..直到我在做。你可以检查我的这个查询还http://stackoverflow.com/questions/16118721/phone-light-turn-on-when-incoming-call-你的帮助将是伟大的完整的我。预先感谢你 – user2160008 2013-04-20 11:13:14