עזרה | שימוש בסטרינג שמור בComponentName
-
@מישהו12 כתב בעזרה | שימוש בסטרינג שמור בComponentName:
מה הבעיה עם הcontext?
הcontext זה משתנה בקוד שלי שיורש את הcontext אתה צריך להתאים לקוד שלך אם אתה בmainActivity הcontext שלך יראה ככה this או MainActivity.this
(תנסה למחוק את הcontext לחלוטין לפעמים לא צריך זה תלוי איפה ממקום הקוד) -
@זונדל וואלה לא הבנתי בדיוק מה לעשות... היה לי את הבעיה הזו כבר עם קוד אחר שהעתקתי.
אני לא בMainActivity.
הקוד שלי נמצא כאן, אשמח לעזרה
https://github.com/AshiVered/monolaunch/blob/main/app/src/main/java/com/monobogdan/monolaunch/Tasks.java
(שורות 122-128) -
@מישהו12 כתב בעזרה | שימוש בסטרינג שמור בComponentName:
@זונדל וואלה לא הבנתי בדיוק מה לעשות... היה לי את הבעיה הזו כבר עם קוד אחר שהעתקתי.
אני לא בMainActivity.
הקוד שלי נמצא כאן, אשמח לעזרה
https://github.com/AshiVered/monolaunch/blob/main/app/src/main/java/com/monobogdan/monolaunch/Tasks.java
(שורות 122-128)עברתי על הקוד שלך הקוד הזה צריך להיות תקין
Intent open = getContext().getPackageManager().getLaunchIntentForPackage("com.package.your"); if (open != null) { open.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(open); } else { Log.d("TAG","לא נמצא"); // האפליקציה לא נמצאה, ניתן לטפל בזה כרצונך }
לא הבנתי מאיפה אתה מקבל בדיוק את השם חבילה שאתה רוצה לפתוח אבל אם אתה מעוניין בשם חבילה ספציפי תחליף בשורה הראשנה לשם חבילה
-
@זונדל כתב בעזרה | שימוש בסטרינג שמור בComponentName:
לא הבנתי מאיפה אתה מקבל בדיוק את השם חבילה שאתה רוצה לפתוח אבל אם אתה מעוניין בשם חבילה ספציפי תחליף בשורה הראשנה לשם חבילה
תגובה 1
תגובה אחרונה לפני 8 דקותהסתבכתי לחלוטין עם לקבל את שם החבילה, אתה יכול לעזור גם בזה? תודה רבה.
-
@מישהו12 כתב בעזרה | שימוש בסטרינג שמור בComponentName:
@זונדל האקטיביטי tasks מציג את כל האפליקציות שרצות ברקע, אני רוצה שבלחיצה על אחת מהאפליקציות שברשימה היא תפתח
זה אמור לעבוד בכל מכשיר או שרק בדגם מסויין כי יש לי קריסה איך שאני פתוח את האפליקציה
-
@מישהו12 כתב בעזרה | שימוש בסטרינג שמור בComponentName:
@זונדל אמור לעבוד בכל מכשיר.
אולי בגלל השגיאות בקוד.
רק שניה... בקוד הזה זה בוודאי עובד.
בדקתי על Qin1s+.
monolaunch.7zהשגיאה הייתה בגלל חוסר בהרשאות הוספתי תוכל להסביר לי בגדול איפה בדיוק החלק שמציג את כל האפליקציות שפועלות ברקע?
-
@מישהו12 כתב בעזרה | שימוש בסטרינג שמור בComponentName:
@זונדל באקטיבטי tasks.
איזה שגיאה הייתה בהרשאות? כי אני גם ניסיתי בעבר להתקין על מכשיר אנדרואיד 8.1 וזה קרס.היה שתי שגיאות אחד בהרשאות שצריך להוסיף הרשאות של קריאה של האחסון
והיה עוד שגיאה בהמרה של תמונת האפליקציה -
@מישהו12 כתב בעזרה | שימוש בסטרינג שמור בComponentName:
@זונדל האקטיביטי tasks מציג את כל האפליקציות שרצות ברקע, אני רוצה שבלחיצה על אחת מהאפליקציות שברשימה היא תפתח
כך סידרתי
public class Tasks extends ListView { public String PACKAGE_NAME; class AppTask { public String name; public String packageName; public Bitmap icon; public int id; public int memUsage; } private Launcher launcher; private BaseAdapter adapterImpl; private ActivityManager activityManager; private ArrayList<AppTask> tasks; public Tasks(Launcher launcher) { super(launcher.getApplicationContext()); this.launcher = launcher; setBackgroundColor(Color.BLACK); tasks = new ArrayList<>(); activityManager = (ActivityManager) launcher.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); adapterImpl = new BaseAdapter() { @Override public int getCount() { return tasks.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @SuppressLint("MissingInflatedId") @Override public View getView(int position, View convertView, ViewGroup parent) { AppTask task = tasks.get(position); View view = launcher.getLayoutInflater().inflate(R.layout.task, parent, false); ((ImageView)view.findViewById(R.id.app_icon)).setImageBitmap(task.icon); ((TextView)view.findViewById(R.id.app_name)).setText(task.name); return view; } }; setAdapter(adapterImpl); } public void updateTaskList() { List<ActivityManager.RunningTaskInfo> tInfo = activityManager.getRunningTasks(10); PackageManager pacMan = getContext().getPackageManager(); tasks.clear(); for (ActivityManager.RunningTaskInfo rt : tInfo) { try { AppTask appInfo = new AppTask(); PackageInfo pacInfo = pacMan.getPackageInfo(rt.topActivity.getPackageName(), 0); if(pacInfo.packageName.equals("com.monobogdan.monolaunch") || pacInfo.packageName.equals("com.sprd.simple.launcher")) continue; appInfo.id = rt.id; appInfo.icon = ((BitmapDrawable) pacInfo.applicationInfo.loadIcon(pacMan)).getBitmap(); appInfo.name = pacMan.getApplicationLabel(pacInfo.applicationInfo).toString(); appInfo.packageName=pacInfo.packageName; tasks.add(appInfo); } catch (PackageManager.NameNotFoundException e) { } } adapterImpl.notifyDataSetChanged(); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { launcher.switchToHome(); return true; } if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { Intent open = getContext().getPackageManager().getLaunchIntentForPackage(tasks.get(getSelectedItemPosition()).packageName); if (open != null) { open.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(open); } else { Log.d("TAG","לא נמצא"); // האפליקציה לא נמצאה, ניתן לטפל בזה כרצונך } } return super.onKeyUp(keyCode, event); } }