• 0
salmana

گرفتن لیست برنامه های نصب شده در گوشی

سوال

سلام خدمت بزرگواران

 

من با کد پایین میام تمام لیست پکیج نیم به همراه اسم برنامه میگیرم و میریزم داخل لیست ویو و هیچ مشکلی هم ندارم

Dim pm As PackageManager
Dim packages As List
packages = pm.GetInstalledPackages
For i = 0 To packages.Size - 1
Dim p As String = packages.Get(i)
ListView1.AddTwoLines(pm.GetApplicationLabel(p),packages.Get(i))
Next

وقتی با کد پایین میام به لیستم آیکن برنامه ها هم اضاف میکنم دیگه تمام برنامه هام توی لیست نمیاره. یعنی من توی گوشیم 480 تا برنامه دارم(هم نصبی و هم سیستمی) با کد بالا هر 480 تا توی لیست ویو نشون میده ولی با کد پایین تا 60 تا برنامه نشون میده

Dim pm As PackageManager
Dim packages As List
packages = pm.GetInstalledPackages
For i = 0 To packages.Size - 1
Dim p As String = packages.Get(i)
Dim bdw As BitmapDrawable = pm.GetApplicationIcon(p)
ListView1.AddTwoLinesAndBitmap(pm.GetApplicationLabel(p),packages.Get(i),bdw.Bitmap)
Next
طاها الیاس زاده و Sina پسند شده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

14 پاسخ به این سوال تا کنون داده شده است

  • 0

مشکل از گوشی شماست یا شبه ساز


با این کد میشه تمامی برنامه ها رو گرفت من تست کردم تعداد 280 برنامه برام اورد:



Activity.LoadLayout("1")
Dim pm As PackageManager
Dim packages As List
packages = pm.GetInstalledPackages
For i = 0 To packages.Size - 1
Dim p As String = packages.Get(i)
Dim bdw As BitmapDrawable = pm.GetApplicationIcon(p)
lv.AddTwoLinesAndBitmap(pm.GetApplicationLabel(p),packages.Get(i),bdw.Bitmap)
Log(packages.Get(i))
Next

شات :


post-1-0-73317100-1464198528_thumb.png


 


پروژه تست پیوست شد


get list app.zip

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

ممنون ادمین جان

 

من حواسم نبود و توی استارتر توی Sub Application_Error فالس داده بودم

 

الان سورسی که شما فرستادی را تست کردم و خطای بسته شدن رو بهم داد و بعد نگاه کردم که توی استارتر شما ترو هست و ماله خودم فالس گذاشته بودم. چون فالس گذاشته بودم خطا را نادیده میگرفت و تا اندکی به کار خودش ادامه میداده

بدین دلیل بوده که فقط چنتا برنامه توی لیست من میاورده. الان رفتم این کدهای خودم رو روی گوشی دوستان تست کردم و درست بودن.

حالا چرا روی گوشی خودم جواب نمیده معلوم نیست.

برنامه share دارم و همه برنامه ها به همراه آیکنش میاره

طاها الیاس زاده پسند دیده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

چند وقته که دارم تلاش میکنم یک سرچ واسه لیست پکیج نیم ها بسازم ولی موفق نمیشم

 

من با کد پایین موفق به سرچ شدم ولی فقط تونستم اسم پکیج نیم رو توی حالت سرچ پیاده سازی کنم چون در کد l.add بلد بودم یه خط (اسم پکیج نیم) براش تعریف کنم واسه ذخیره. دیگه نتونستم چجوری خط دوم و آیکن ببرم توی لیست. احتمالا از متد  l.AddAll بشه هم خط دوم و هم آیکن رو ذخیره کرد.ولی طرز کارش بلد نیستم

 

نکته:همونگه که در بالا مشخصه من مشکل آوردن اسم برنامه و اسم پکیج نیم و آیکن در برنامه ندارم . فقط مشکل سرچ این 3 تا دارم. من با کد پایین فقط تونستم یکی از این 3 تا را برای سرچ درست کنم(البته با یک راهی تونستم اسم برنامه هم رو برای سرچ درستش کنم و مشکل اصلی من آیکن هست)

 

اگه وقت داشتین کد آماده اش واسم مینوشتین عالی میشد(میدونم زیاده خاهیه ولی چون آقایی درخواست کردم. وگرنه بعضی جاها حتی سوال هم نمیکنم. چون جواب دادن براشون سخته)

 

شاید درست منظورم را نگرفته باشی . درخاستم رو واضحتر میگم. من میخام لیست برنامه توی لیست بیارم(به همراه اسم برنامه و اسم پکیج نیم و آیکن) تا اینجا که مشکلی ندارم. حالا میخام واسش سرچ درست کنم

(من راه پایین واسه سرچ رفتم ولی نتونستم توی سرچ آیکن رو هم حفظ کنم)

Sub Globals
Private ListView1 As ListView
Dim l As List
Private EditText1 As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("main")
l.Initialize
Dim pm As PackageManager
Dim packages As List
packages = pm.GetInstalledPackages
For i = 0 To packages.Size - 1
ListView1.SingleLineLayout.ItemHeight=300
ListView1.AddSingleLine(packages.Get(i))
l.Add(packages.Get(i))
l.AddAll
Next
End Sub

Sub EditText1_TextChanged (Old As String, New As String)
ListView1.Clear
For i=0 To l.Size-1
Dim g As String
g=l.Get(i)
If g.Contains(EditText1.Text)=True Then
ListView1.AddSingleLine(g)
End If
Next
If ListView1.Size=0 Then
ToastMessageShow("چنین برنامه ای وجود نداره",False)
End If
End Sub

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

سلام

 

ارل خان اون فایل پیوستیت ظاهرا توی اندروید 5 به بالا مشکل داره. در بالا گفتم که روی گوشیم(اندروید5) مشکل دارم.الان روی اندروید6 رفیقم هم ارور داد. ولی توی اندروید زیر 5 جواب میده. آیا قابل حل هست؟

 

نکته: قابلیت سرچ واسه دو ایتم و ایکن هم پیدا کردم و پیوست میکنم ولی بازم توی اندروید5 به بالا ایراد داره و روی اندروید زیر 5 بخوبی جواب میده

 

 

get list app.zip

 

 

فایل خودم با قابلیت سرچ

 

 

متن خطا در اندروید 5 به بالا

Installing file.
PackageAdded: package:b4a.examples
Copying updated assets files (1)
** Service (starter) Create **
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
Error occurred on line: 33 (Main)
java.lang.ClassCastException: android.graphics.drawable.VectorDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
	at b4a.examples.main._activity_create(main.java:382)
	at java.lang.reflect.Method.invoke(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:372)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:702)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:246)
	at java.lang.reflect.Method.invoke(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:372)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
	at b4a.examples.main.afterFirstLayout(main.java:102)
	at b4a.examples.main.access$000(main.java:17)
	at b4a.examples.main$WaitForLayout.run(main.java:80)
	at android.os.Handler.handleCallback(Handler.java:739)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:145)
	at android.app.ActivityThread.main(ActivityThread.java:5940)
	at java.lang.reflect.Method.invoke(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:372)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
** Activity (main) Resume **

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

داخل کدی که ارور میده  از Try Catch استفاده کن (کل کدی که دادم بذار داخل Try Catch)


تست کن و اطلاع بده


salmana پسند دیده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

 

داخل کدی که ارور میده  از Try Catch استفاده کن (کل کدی که دادم بذار داخل Try Catch)

تست کن و اطلاع بده

 

جناب مجتبی

 

وقتی توی ترای کچ میزارم 60 تا از برنامه هام توی لیست میاره درحالیکه 480 تا برنامه دارم(با برنامه سیستمی منظورمه)

 

جهت اطلاع : این 60 تا برنامه ای که توی لیست نشون میده هم برنامه سیستمی داخلشه و هم نصبی

 

 

-----------------------------

همین مشکل را توی جاوا هم داشتن . من که انگلیسی سردر نیاوردم و لینکش میزارم

 

لینک

H@mid.RS پسند دیده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

تنها راهی که خود ارل پیشنهاد دادن با این ارور همین بود منم در اختیار شما قرار دادم


ولی خوب هر چی اندروید ارتقا پیدا بکنه دسترسی به امکاناتش کمی سخت تر میشه


مثلا اگه دسترسی شو داخل مینفیست داخل اندروید 5 به بالا اضافه نکنید ارور مشاهده میشه


 


در حالی که در اندروید زیر 5 نیاز نیست و سخت گیری نشده


با ارتقا امنیت سیستم عامل هم میره بالا


 


+++++++++++++++++++++++++++++++++


اون ارور جاوا مبنی بر گرفتن ایکن برنامه ها هست و فرق داره با مشکل شما

salmana پسند دیده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

 

تنها راهی که خود ارل پیشنهاد دادن با این ارور همین بود منم در اختیار شما قرار دادم

ولی خوب هر چی اندروید ارتقا پیدا بکنه دسترسی به امکاناتش کمی سخت تر میشه

مثلا اگه دسترسی شو داخل مینفیست داخل اندروید 5 به بالا اضافه نکنید ارور مشاهده میشه

 

در حالی که در اندروید زیر 5 نیاز نیست و سخت گیری نشده

با ارتقا امنیت سیستم عامل هم میره بالا

 

+++++++++++++++++++++++++++++++++

اون ارور جاوا مبنی بر گرفتن ایکن برنامه ها هست و فرق داره با مشکل شما

 

 

ممنون از پیگیری تون

 

در بالا گفتین کدی هست توی منیفیست بزاریم تا این ارور حل بشه؟

 

این همه برنامه های شار و غیره توی بازار هستن که قشنگ تمام آیکن ها رو میگیرن و میریزن توی لیست(با اندروید 5 به بالا هم مشکل ندارن)

 

مجتبی خان شرمنده که مزاحمتم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

با کد جاوای پایین میشه لیست برنامه های نصبی رو گرفت

 

حالا نمیدونم چجوری اسم برنامه و آیکن برنامه را بگیرم. با کد پایین فقط اسم پکیج میشه گرفت

  Dim Obj1, Obj2, Obj3 As Reflector
   Dim size, i, flags As Int
   Dim msg, name As String
   Dim pl As List
   pl.Initialize
   Obj1.Target = Obj1.GetContext
   Obj1.Target = Obj1.RunMethod("getPackageManager") ' PackageManager
   Obj1.Target = Obj1.RunMethod2("getInstalledPackages", 0, "java.lang.int") ' List<PackageInfo>
   size = Obj1.RunMethod("size")
   For i = 0 To size -1
      Obj2.Target = Obj1.RunMethod2("get", i, "java.lang.int") ' PackageInfo
      name = Obj2.GetField("packageName")
      Obj3.Target = Obj2.GetField("applicationInfo") ' ApplicationInfo     
      flags = Obj3.GetField("flags")  
               If Bit.And(flags, 1)  = 0 Then
                   'app is not in the system image
                msg = msg & name & " : " & flags & CRLF
                pl.Add(name)
			ListView1.AddSingleLine(name)
               End If     
     
   Next  
   Return pl

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

با کد پایین آیکن هم بدست آوردم ولی بازم توی اندروید 5 و 6 خطای بالا میده

 

پس چه کدی وجود داره که تمام آیکن ها را به راحتی میاره توی لیست .ای خدا....

 Dim args(1) As Object
  Dim Obj1, Obj2, Obj3, Obj4 As Reflector
  Dim size, i, flags, count As Int
  Dim Types(1), msg, name As String
  Obj1.Target = Obj1.GetContext
  Obj1.Target = Obj1.RunMethod("getPackageManager") ' PackageManager
  Obj2.Target = Obj1.RunMethod2("getInstalledPackages", 0, "java.lang.int") ' List<PackageInfo>
  size = Obj2.RunMethod("size")
  For i = 0 To size -1
    Obj3.Target = Obj2.RunMethod2("get", i, "java.lang.int") ' PackageInfo
    name = Obj3.GetField("packageName")
    Obj3.Target = Obj3.GetField("applicationInfo") ' ApplicationInfo 
    flags = Obj3.GetField("flags")
    Dim icon As BitmapDrawable
'    If Bit.And(flags, 1)  = 0 Then
      args(0) = Obj3.Target
      Types(0) = "android.content.pm.ApplicationInfo"
      name = Obj1.RunMethod4("getApplicationLabel", args, Types)
      icon = Obj1.RunMethod4("getApplicationIcon", args, Types)  '  *** NEW LINE  ***
      msg = msg & name & " : " & flags & CRLF
      count = count + 1 
'    End If
	ListView1.AddTwoLinesAndBitmap("خط اول",name,icon.Bitmap)
  Next 
  Msgbox(msg,count)
  Return

مجتبی خان میخام یه بار مشکلاتم را آنالیز بکنم خدمتتون :

 

چه با این کد و چه با کد اولی :

 

توی نسخه زیر 5 راحت جواب میده. حالا اگه توی نسخه 5 به بالا تست کنم ارور متوقف شدن برنامه میده. دلیلش میدونی چیه ؟ دلیلش این هست که برنامه 61 بنده اجازه دادن آیکن بهش نمیده. اگر یادت باشه من بالا گفتم که اگر توی ترای کچ بزارم 60 تا از برنامه هام نشون میده.اگر ترای کچ نزارم خط 61 باعث خطای توقف برنامه ها میشه

 

چرا با قاطعیت میگم خط 61 ایراد داره ؟ چون من با دستور مستقیم بگگراند کردن خط 61 را به ایمیج ویو دادم و دیدم که ایمیج ویو عکس نمیگیره ولی وقتی عدد 61 را به عدد 65,70,350,20 و هر عدد دیگه تغییر دادم ایمیج ویو به خود عکس گرفت . ناگفته نماند غیر از برنامه 61 دو تا برنامه دیگه هم آیکنش بهم نداد(گدا گشنه.خخخخخ)

 

 

خلاصه اگه برنامه نویسیم خوب بود میتونستم خطهایی(برنامه هایی) را که آیکنش بهم نمیدادن را درنظر نگیرم و اونهایی را که بهم میدن توی لیست جمع میکردم

H@mid.RS پسند دیده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

بالاخره موفق شدم و کدش رو پایین میزارم شاید دوای درد کسی شد

 

توضیح :

1-این کد فقط میاد لیست برنامه های نصبی رو میگیره (به همراه اسم برنامه,اسم پکیج نیم و آیکن برنامه را میگیره)

2- کدهای ساده تری وجود دارن که میشه کل برنامه ها(نصبی و سیستمی) به همراه اسم برنامه و اسم پکیج نیم و آیکن هاشون گرفت ولی یک مشکل داره و اونم این هست که در اندروید 5 به بالا خطا میده

 

توی دیزاینر یک لیست ویو بسازین و توی گلوبال هم تعریف کنید و مابقی کد پایین بزارین

Sub Activity_Create(FirstTime As Boolean)

  Activity.LoadLayout("f1")
Try
 Dim args(1) As Object
  Dim Obj1, Obj2, Obj3 As Reflector
  Dim size, i, flags, count As Int
  Dim Types(1), msg, name As String
  Obj1.Target = Obj1.GetContext
  Obj1.Target = Obj1.RunMethod("getPackageManager") ' PackageManager
  Obj2.Target = Obj1.RunMethod2("getInstalledPackages", 0, "java.lang.int") ' List<PackageInfo>
  size = Obj2.RunMethod("size")
  For i = 0 To size -1
    Obj3.Target = Obj2.RunMethod2("get", i, "java.lang.int") ' PackageInfo
    name = Obj3.GetField("packageName")
    Obj3.Target = Obj3.GetField("applicationInfo") ' ApplicationInfo 
    flags = Obj3.GetField("flags")
   If Bit.And(flags, 1)  = 0 Then
  
   	  Dim icon As BitmapDrawable
	  Dim name2 As String
      args(0) = Obj3.Target
      Types(0) = "android.content.pm.ApplicationInfo"
      name2 = Obj1.RunMethod4("getApplicationLabel", args, Types)
      icon = Obj1.RunMethod4("getApplicationIcon", args, Types)
      msg = msg & name & " : " & flags & CRLF
      count = count + 1 
	  
   ListView1.AddTwoLinesAndBitmap(name,name2,icon.Bitmap)

    End If
	
  Next 


 Return
Catch
End Try
End Sub
H@mid.RS پسند دیده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

با سپاس آیا کدی میشه اضافه کرد به سورستون که همه برنامه ها رو باهم پاک کنه.ریمو آل

ListView1.Clear

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

عزیزم منظورم نصبشونه یعنی آنیستال کنه نه لیست ویو رو پاک کنه که

با سپاس

 

فکر نکنم کدی باشه که همه با هم بشه آنیستال کرد ولی تکی میشه

 

کدش :

Dim i As Intent
i.Initialize("android.intent.action.DELETE", "package:"&"esm Package")
StartActivity(I)

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

فقط شما می تونید برنامه های غیر سیستمی رو به کتابخانه Silent App که نیازمند با روت هست پاک کنید اونم نیاز به یک تایمر داره که واقعا معقولانه نیست این کار



Dim r as string
r = SilentApp.UninstallApk ( "packagename" )

به دلیل هنگ و مشکلاتی که برای گوشی و برنامه پیش میاد امکان پذیر نیست


 



 
salmana و طاها الیاس زاده پسند شده است

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری