Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的android应用程序在运行此服务时崩溃?_Android_Xml - Fatal编程技术网

为什么我的android应用程序在运行此服务时崩溃?

为什么我的android应用程序在运行此服务时崩溃?,android,xml,Android,Xml,我正在尝试为那些不支持有条件呼叫转接的网络提供商开发一个应用程序,用于在batter达到一定级别时进行有条件呼叫转接。我只是个新手。请帮帮我。是因为我们无法拨打服务电话还是其他原因请检查错误消息并仔细建议。这对我会有很大帮助。我的服务是这样的 package com.cospirit.nonprogress; import android.Manifest; import android.app.Service; import android.content.Contex

我正在尝试为那些不支持有条件呼叫转接的网络提供商开发一个应用程序,用于在batter达到一定级别时进行有条件呼叫转接。我只是个新手。请帮帮我。是因为我们无法拨打服务电话还是其他原因请检查错误消息并仔细建议。这对我会有很大帮助。我的服务是这样的

package com.cospirit.nonprogress;
    import android.Manifest;
    import android.app.Service;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.content.SharedPreferences;
    import android.content.pm.PackageManager;
    import android.net.Uri;
    import android.os.BatteryManager;
    import android.os.IBinder;
    import android.support.v4.app.ActivityCompat;

    public class MyService extends Service {


        IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        Intent batteryStatus = getApplicationContext().registerReceiver(null, ifilter);
        boolean charginginfo = false;
        SharedPreferences spdf1 = getSharedPreferences("divertInfo", Context.MODE_PRIVATE);
        String numberDivert;
        int batterylevel = Integer.parseInt(spdf1.getString("battery_Level", ""));
        boolean divert ;


    public MyService()
    {}
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {

            Runnable r = new Runnable() {
                public void run() {
                    int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                    int chargingStatus = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
                    charginginfo = chargingStatus == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
                    divert = false;
                    synchronized (this) {
                        while (status > 30 || charginginfo == true) {
                            if (divert == true) {
                                cancelDivert();
                                divert = false;
                                status = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                            }


                        }
                        while (batterylevel < status && status < 30 && charginginfo == false) {
                            if (divert == true) {
                                cancelDivert();
                                divert = false;
                                status = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                            }


                        }
                        while ((status < batterylevel || status == batterylevel) && charginginfo == false) {
                            if (divert == false) {
                                divertCalls();
                                divert = true;
                                status = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                            }
                        }
                    }
                }



            };
            Thread tr = new Thread(r);
            tr.start();
            return START_REDELIVER_INTENT;
        }




        public void divertCalls() {
            try {


                spdf1 = getSharedPreferences("divertInfo", Context.MODE_PRIVATE);
                numberDivert = spdf1.getString("phone_details", "");
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("**21*" + numberDivert + "#"));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.
                    return;
                }
                startActivity(intent);


            }
            catch(Exception ep)
            {
                ep.printStackTrace();
            }
        }
        public void cancelDivert() {
            try {
                Intent intents = new Intent(Intent.ACTION_CALL);
                intents.setData(Uri.parse("#21#"));
                intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intents.addFlags(Intent.FLAG_FROM_BACKGROUND);
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

                    return;
                }
                startActivity(intents);
            }
            catch(Exception ep)
            {
                ep.printStackTrace();
            }
        }
        @Override
        public void onDestroy() {
            super.onDestroy();
        }

        @Override
        public IBinder onBind(Intent intent) {
       return null;
        }
    }
package com.cospirit.nonprogress;
导入android.Manifest;
导入android.app.Service;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.content.SharedReferences;
导入android.content.pm.PackageManager;
导入android.net.Uri;
导入android.os.BatteryManager;
导入android.os.IBinder;
导入android.support.v4.app.ActivityCompat;
公共类MyService扩展服务{
IntentFilter ifilter=新的IntentFilter(Intent.ACTION\u电池\u已更改);
Intent batteryStatus=getApplicationContext().registerReceiver(null,ifilter);
布尔charginginfo=false;
SharedReferences spdf1=getSharedReferences(“divertInfo”,Context.MODE\u PRIVATE);
字符串编号转换;
int batterylevel=Integer.parseInt(spdf1.getString(“电池电量水平”);
布尔转移;
公共MyService()
{}
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId){
Runnable r=新的Runnable(){
公开募捐{
int status=batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
int chargingStatus=batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS,-1);
charginginfo=chargingStatus==BatteryManager.BATTERY_STATUS_CHARGING | | STATUS==BatteryManager.BATTERY_STATUS_FULL;
转移=假;
已同步(此){
而(状态>30 | | charginginfo==真){
如果(转移==真){
取消转移();
转移=假;
状态=batteryStatus.getIntExtra(BatteryManager.EXTRA_级别,-1);
}
}
while(batterylevel
xml清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cospirit.nonprogress">

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true"></service>
    </application>

</manifest>

错误消息

12-13 01:08:23.222 12033-12033/com.cospirit.nonprogress E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: com.cospirit.nonprogress, PID: 12033
                                                                          java.lang.RuntimeException: Unable to instantiate service com.cospirit.nonprogress.MyService: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
                                                                              at android.app.ActivityThread.handleCreateService(ActivityThread.java:2862)
                                                                              at android.app.ActivityThread.-wrap4(ActivityThread.java)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:148)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                           Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
                                                                              at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:107)
                                                                              at com.cospirit.nonprogress.MyService.<init>(MyService.java:19)
                                                                              at java.lang.Class.newInstance(Native Method)
                                                                              at android.app.ActivityThread.handleCreateService(ActivityThread.java:2859)
                                                                              at android.app.ActivityThread.-wrap4(ActivityThread.java) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:148) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                              at java.lang.reflect.Method.invoke(Native Method) 
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
12-13 01:08:23.222 12033-12033/com.cospirit.nonprogress E/AndroidRuntime:FATAL EXCEPTION:main
进程:com.cospirit.nonprogress,PID:12033