не запускается 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;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей