java android Ошибка null array

307
11 февраля 2018, 00:01

не запускается apk, пишит ошибку

02-09 22:22:45.945  3449  3449 D WakeGestureUtil: [isAppPresence] begin
02-09 22:22:45.945  3449  3449 D WakeSqliteManager: [SqliteManager]
02-09 22:22:45.946  3449  3449 D WakeSqliteManager: [queryAll]
02-09 22:22:45.950  2576  2576 I Finsky  : [1] com.google.android.finsky.wear.am.a(78): Connecting to wearable; initiated by: com.google.android.finsky.wear.WearSupportService
02-09 22:22:45.990  1563  3095 W ConfigurationChimeraPro: Got null configs for com.google.android.gms.auth.account.base
02-09 22:22:46.003  2812  2934 I tnet-jni: 63 - [spdyStreamResponseRecv] - 
02-09 22:22:46.003  2812  2934 I tnet-jni: 63 - [SpdySessionCallBack.spdyOnStreamResponse] - org.android.spdy.SpdySession@d8e8618
02-09 22:22:46.032  3449  3449 D WakeSqliteManager: [queryAll]
02-09 22:22:46.040  3449  3449 D WakeSqliteManager: [queryKey] key:0
02-09 22:22:46.048  3449  3449 D WakeGestureUtil: [isAppPresence] 1
02-09 22:22:46.048  3449  3449 D WakeGestureUtil: [isAppPresence] 2
02-09 22:22:46.049  3449  3449 D WakeGestureUtil: [isAppPresence] 3
02-09 22:22:46.049  3449  3449 D WakeGestureUtil: [isAppPresence] 4
02-09 22:22:46.055  3301  3436 W art     : Long monitor contention with owner pool-5-thread-1 (3367) at boolean android.os.BinderProxy.transactNative(int, android.os.Parcel, android.os.Parcel, int)(Binder.java:-2) waiters=1 in void com.google.android.ads.tasks.f.a() for 199ms
02-09 22:22:46.055  3301  3468 W art     : Long monitor contention with owner pool-5-thread-1 (3367) at boolean android.os.BinderProxy.transactNative(int, android.os.Parcel, android.os.Parcel, int)(Binder.java:-2) waiters=3 in void com.google.android.ads.tasks.e.a() for 193ms
02-09 22:22:46.069  3449  3449 D WakeGestureUtil: [isAppPresence] 5
02-09 22:22:46.070  3449  3449 D WakeGestureUtil: [isAppPresence] 6
02-09 22:22:46.071  3449  3449 D AndroidRuntime: Shutting down VM
02-09 22:22:46.072  3449  3449 E AndroidRuntime: FATAL EXCEPTION: main
02-09 22:22:46.072  3449  3449 E AndroidRuntime: Process: com.wheatek.wakegesture, PID: 3449
02-09 22:22:46.072  3449  3449 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wheatek.wakegesture/com.wheatek.wakegesture.MainActivity}: java.lang.NullPointerException: Attempt to read from null array
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.ActivityThread.-wrap12(ActivityThread.java)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:102)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:154)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:6186)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
02-09 22:22:46.072  3449  3449 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from null array
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at com.wheatek.wakegesture.util.GestureUtil.isAppPresence(GestureUtil.java:215)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at com.wheatek.wakegesture.MainActivity.onCreate(MainActivity.java:24)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.Activity.performCreate(Activity.java:6684)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637)
02-09 22:22:46.072  3449  3449 E AndroidRuntime:    ... 9 more

код не проходит дальше, вроде как, этого фрагметна

for (int i = 0; i < packageInfos.size(); i++) {
    if (((ResolveInfo) packageInfos.get(i)).activityInfo.packageName.equals(packageName[1])) {
        return true;
    }
}

в этом коде

package com.wheatek.wakegesture.util;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.provider.Settings.Global;
import android.util.Log;
import com.wheatek.wakegesture.bean.KeyGestureFunction;
import com.wheatek.wakegesture.sqlite.SqliteManager;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
public class GestureUtil {
    public static void setGestureEnabled(Context context, boolean on) {
        int i = 1;
        Log.i("WakeGestureUtil", "setGestureEnabled: on = " + on);
        try {
            FileOutputStream fos = new FileOutputStream("/sys/class/tp_gesture/gesenable");
            byte[] bytes = new byte[2];
            bytes[0] = (byte) (on ? 49 : 48);
            bytes[1] = (byte) 10;
            fos.write(bytes);
            fos.close();
            ContentResolver contentResolver = context.getContentResolver();
            String str = "key_gesture_wake_switch";
            if (!on) {
                i = 0;
            }
            Global.putInt(contentResolver, str, i);
        } catch (Exception e) {
            Log.i("WakeGestureUtil", "Exception:" + e.getMessage());
            e.printStackTrace();
        }
    }
    public static boolean getGestureEnabled(Context context) {
        return Global.getInt(context.getContentResolver(), "key_gesture_wake_switch", 0) == 1;
    }
    public static void setSwitchStatus(Context context, int keyCode, boolean status) {
        int status_int = status ? 1 : 0;
        ContentResolver resolver = context.getContentResolver();
        switch (keyCode) {
            case 0:
            case 34:
                Global.putInt(resolver, "key_gesture_wake_f", status_int);
                return;
            case 1:
            case 19:
                Global.putInt(resolver, "key_gesture_wake_dpad_up", status_int);
                return;
            case 2:
            case 20:
                Global.putInt(resolver, "key_gesture_wake_dpad_down", status_int);
                return;
            case 3:
            case 21:
                Global.putInt(resolver, "key_gesture_wake_dpad_left", status_int);
                return;
            case 4:
            case 22:
                Global.putInt(resolver, "key_gesture_wake_dpad_right", status_int);
                return;
            case 31:
                Global.putInt(resolver, "key_gesture_wake_c", status_int);
                return;
            case 33:
                Global.putInt(resolver, "key_gesture_wake_e", status_int);
                return;
            case 41:
                Global.putInt(resolver, "key_gesture_wake_m", status_int);
                return;
            case 43:
                Global.putInt(resolver, "key_gesture_wake_o", status_int);
                return;
            case 47:
                Global.putInt(resolver, "key_gesture_wake_s", status_int);
                return;
            case 50:
                Global.putInt(resolver, "key_gesture_wake_v", status_int);
                return;
            case 51:
                Global.putInt(resolver, "key_gesture_wake_w", status_int);
                return;
            case 54:
                Global.putInt(resolver, "key_gesture_wake_z", status_int);
                return;
            default:
                return;
        }
    }
    public static boolean getSwitchStatus(Context context, int keyCode) {
        int flag = 0;
        ContentResolver resolver = context.getContentResolver();
        switch (keyCode) {
            case 0:
            case 34:
                flag = Global.getInt(resolver, "key_gesture_wake_f", 0);
                break;
            case 1:
            case 19:
                flag = Global.getInt(resolver, "key_gesture_wake_dpad_up", 0);
                break;
            case 2:
            case 20:
                flag = Global.getInt(resolver, "key_gesture_wake_dpad_down", 0);
                break;
            case 3:
            case 21:
                flag = Global.getInt(resolver, "key_gesture_wake_dpad_left", 0);
                break;
            case 4:
            case 22:
                flag = Global.getInt(resolver, "key_gesture_wake_dpad_right", 0);
                break;
            case 31:
                flag = Global.getInt(resolver, "key_gesture_wake_c", 0);
                break;
            case 33:
                flag = Global.getInt(resolver, "key_gesture_wake_e", 0);
                break;
            case 41:
                flag = Global.getInt(resolver, "key_gesture_wake_m", 0);
                break;
            case 43:
                flag = Global.getInt(resolver, "key_gesture_wake_o", 0);
                break;
            case 47:
                flag = Global.getInt(resolver, "key_gesture_wake_s", 0);
                break;
            case 50:
                flag = Global.getInt(resolver, "key_gesture_wake_v", 0);
                break;
            case 51:
                flag = Global.getInt(resolver, "key_gesture_wake_w", 0);
                break;
            case 54:
                flag = Global.getInt(resolver, "key_gesture_wake_z", 0);
                break;
        }
        if (flag == 1) {
            return true;
        }
        return false;
    }
    public static String getAppsNaem(Context context, KeyGestureFunction keyAction, boolean is_phone) {
        List<ResolveInfo> packageInfos = getApplicationInfoList(context);
        int length = packageInfos.size();
        String appsName = "";
        int i;
        ResolveInfo info;
        if (is_phone) {
            for (i = 0; i < length; i++) {
                info = (ResolveInfo) packageInfos.get(i);
                if (info.activityInfo.packageName.equals("com.android.dialer") && info.activityInfo.name.equals("com.android.dialer.DialtactsActivity")) {
                    return info.loadLabel(context.getPackageManager()).toString();
                }
            }
            return appsName;
        }
        for (i = 0; i < length; i++) {
            info = (ResolveInfo) packageInfos.get(i);
            if (info.activityInfo.packageName.equals(keyAction.getPackage_name()) && info.activityInfo.name.equals("com.android.fmradio.FmActivity")) {
                return info.loadLabel(context.getPackageManager()).toString();
            }
            if (info.activityInfo.packageName.equals(keyAction.getPackage_name()) && info.activityInfo.name.equals(keyAction.getApps_activity())) {
                return info.loadLabel(context.getPackageManager()).toString();
            }
        }
        return appsName;
    }
    public static List<ResolveInfo> getApplicationInfoList(Context context) {
        Log.d("WakeGestureUtil", "[isAppPresence] 11");
        PackageManager packageManager = context.getPackageManager();
        Log.d("WakeGestureUtil", "[isAppPresence] 22");
        ArrayList<ResolveInfo> homeActivities = new ArrayList();
        Log.d("WakeGestureUtil", "[isAppPresence] 33");
        packageManager.getHomeActivities(homeActivities);
        Log.d("WakeGestureUtil", "[isAppPresence] 44");
        Intent intent = new Intent("android.intent.action.MAIN", null);
        Log.d("WakeGestureUtil", "[isAppPresence] 55");
        intent.addCategory("android.intent.category.LAUNCHER");
        Log.d("WakeGestureUtil", "[isAppPresence] 66");
        List<ResolveInfo> packageInfos = packageManager.queryIntentActivities(intent, 1);
        Log.d("WakeGestureUtil", "[isAppPresence] 77");
        int i = 0;
        Log.d("WakeGestureUtil", "[isAppPresence] 88");
        while (i < packageInfos.size()) {
            for (int j = 0; j < homeActivities.size(); j++) {
                if (((ResolveInfo) packageInfos.get(i)).activityInfo.packageName.equals(((ResolveInfo) homeActivities.get(j)).activityInfo.packageName)) {
                    Log.d("WakeGestureUtil", "[isAppPresence] 99");
                    packageInfos.remove(i);
                    Log.d("WakeGestureUtil", "[isAppPresence] 999");
                    i--;
                    Log.d("WakeGestureUtil", "[isAppPresence] 9999");
                }
            }
            Log.d("WakeGestureUtil", "[isAppPresence] 99997");
            i++;
            Log.d("WakeGestureUtil", "[isAppPresence] 99998");
        }
        return packageInfos;
    }
    public static boolean isAppPresence(Context context, int keyCode) {
        Log.d("WakeGestureUtil", "[isAppPresence] begin");
        String[] packageName = new SqliteManager(context).queryKey(keyCode);
        PackageManager packageManager = context.getPackageManager();
        Intent intent = new Intent("android.intent.action.MAIN", null);
        intent.addCategory("android.intent.category.LAUNCHER");
        List<ResolveInfo> packageInfos = packageManager.queryIntentActivities(intent, 1);
        if (keyCode == 19 || keyCode == 21 || keyCode == 20 || keyCode == 22) {
            return true;
        }
        Log.d("WakeGestureUtil", "[isAppPresence] 6");
        for (int i = 0; i < packageInfos.size(); i++) {
            if (((ResolveInfo) packageInfos.get(i)).activityInfo.packageName.equals(packageName[1])) {
                return true;
            }
        }
        Log.d("WakeGestureUtil", "[isAppPresence] end");
        return false;
    }
}
READ ALSO
Activity не видит TextView в фрагменте

Activity не видит TextView в фрагменте

На главном экране есть FrameLayout, где, в зависимости от выбранного пункта меню, меняются фрагменты (экраны)

213
Адаптируемый размер текста у Control JavaFX

Адаптируемый размер текста у Control JavaFX

Собственно уже n-ый день мучаюсь с размером шрифтаВот ситуация: на обычный AnchorPane добавил обычную кнопку и поставил все якори по 30

240
Фон с помощью jlabel закрывает все кнопки

Фон с помощью jlabel закрывает все кнопки

Когда ставлю фон с помощью jlabel, все кнопки и поля становятся под фономКак это исправить можно?

202
JavaFX: Взаимодействие двух окон

JavaFX: Взаимодействие двух окон

Есть два окна, допустим при нажатии кнопки в окне1 вызывается окно2 и в контроллер окна2 должен передаться объект1 из окна1 После неких операций,...

261