رفتن به مطلب
  • 0

چک کردن وجود شورتکات


salmana

سوال

من با کد پایین راحت میام میانبر ایجاد میکنم

منیفیست
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
توی رویداد باتن


Dim shortcutIntent As Intent
shortcutIntent.Initialize("", "")
shortcutIntent.SetComponent("b4a.examplehfg/.main") ' Put the app package name here
Dim in As Intent
in.Initialize("", "")
in.PutExtra("android.intent.extra.shortcut.INTENT", shortcutIntent)
in.PutExtra("android.intent.extra.shortcut.NAME", "مای نیم") ' Put you're application name here
in.PutExtra("android.intent.extra.shortcut.ICON", LoadBitmap(File.DirAssets,"myicon.png")) 
in.Action = "com.android.launcher.action.INSTALL_SHORTCUT"
Dim p As Phone
p.SendBroadcastIntent(in)
PrefMgr.SetBoolean("shortcutinstalled", True)

حالا با کد پایین که به ابتدای کد بالا اضاف میکنیم میاییم میگیم اگر شورتکات ساخته شده دیگه نساز. تا اینجا هم مشکلی ندارم

Dim PrefMgr As PreferenceManager
If PrefMgr.GetBoolean("shortcutinstalled") Then
Return
End If

مشکل اینجاست که اگه کاربر بیاد اول صفحه و میانبر رو حذف کنه دیگه نمیشه از توی برنامه شورتکات را اضافه کنیم

 

خلاصه حرفم این هست : من میخام با زذدن باتن میانبر ایجاد بشه. حالا اگه دوباره روی باتن زد بگه میانبر از قبل وجود داره.اگر کاربر حذفش کرد دوباره بتونیم با زدن باتن میانبر ایجاد بکنیم

 

 

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

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

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

ارسال‌های توصیه شده

یه مشکل دیگه:

چجوری میشه که واسه اکتیویتی دیگه شورتکات ایجاد کنیم . من .main رو هم به اسم اکتیویتی موردنظرم تغییر دادم ولی نتیجه نداد

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

امروز بعد مدتها دنباله این قضیه رو گرفتم و کدی پیدا کردم که بشه برای هر اکتیویتی یه شورتکات ایجاد کنه. چون کارایی هم زیاد داشت گفتم اینجا بزارم( یکی از کاربرداش اینه که میشه ازش به عنوان باتن برای زدن اجرا شدن کد ussd یا غیره در صفحه اصلی ازش بهره برد.)

 

باید این کد رو به منیفیست اضافه کرد:

SetActivityAttribute(nameactivity2, android:exported, true)

سورس رو به همراه توضیحات درونش پیوست کردم

shortcutOtherActivity.rar

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

چجوری همچین چیزی امکان پذیره ؟ :fekr:

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

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

حالا این وسط تکلیف اون اکتیویتی که دیفالته چی میشه؟ :fekr:

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

هموطن شما اومدین اینجا بعداز ایجاد کردن شرتکات کد زیر رو اضافه کردین

PrefMgr.SetBoolean("shortcutinstalled", True)

بعدش اومدین قبل از اینکه اون کدها رو اجرا کنین این کدرو نوشتین

Dim PrefMgr As PreferenceManager
If PrefMgr.GetBoolean("shortcutinstalled") Then
Return
End If

همه چیز واضحه دیگه کاربر چه شرتکات رو حذف کنه چه حذف نکنه دیگه هیچ وقت شرتکات ساخته نمیشه چون مقدار PrefMgr.GetBoolean همیشه true هستش دیگه(قبلا آپدیتش کردی)

باید بیای چک کنی ببینی شرتکات هست یا نه بعد اونو نصب کنی

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

هموطن شما اومدین اینجا بعداز ایجاد کردن شرتکات کد زیر رو اضافه کردین

PrefMgr.SetBoolean("shortcutinstalled", True)

بعدش اومدین قبل از اینکه اون کدها رو اجرا کنین این کدرو نوشتین

Dim PrefMgr As PreferenceManager
If PrefMgr.GetBoolean("shortcutinstalled") Then
Return
End If

همه چیز واضحه دیگه کاربر چه شرتکات رو حذف کنه چه حذف نکنه دیگه هیچ وقت شرتکات ساخته نمیشه چون مقدار PrefMgr.GetBoolean همیشه true هستش دیگه(قبلا آپدیتش کردی)

باید بیای چک کنی ببینی شرتکات هست یا نه بعد اونو نصب کنی

 

 

ممنون محدرضا جان :53:

اینا را خودم میدونم و بالا هم توضیح دادم و گفتم

 

تنها سوال من این بود که کد چک کردن وجود و نبود شورتکات چیه؟

 

که شما اینو به صورت فارسی بهم گفتین. اگه کدش رو میدونین ممنون میشم به اشتراک بزاری :heart:

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

چجوری همچین چیزی امکان پذیره ؟ :fekr:

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

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

حالا این وسط تکلیف اون اکتیویتی که دیفالته چی میشه؟ :fekr:

 

 

خسته نباشی محمدرضاجان

 

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

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

متاسفانه  راهی نیست به صورت مستقیم چک کنیم که شورت کات توی هوم اسکرین هست یا نه البته شاید از طریق ContentResolver بشه ولی تو بیسیک نمیدونم میشه استفاده کرد یا نه

من چیزایی که به ذهنم میرسه اینه که دو تا باتن بزارین یکی برای اضافه کردن و یکی هم برای حذف کردن متدهای هردوشونو واست میذارم در ضمن تو متدی که شما استفاده کردین یه سری اشکالات بود که درست کردم

متد اضافه کردن

Sub create
Dim shortcutIntent As Intent
shortcutIntent.Initialize("", "")
shortcutIntent.Action=shortcutIntent.ACTION_MAIN
shortcutIntent.SetComponent("b4a.example/.main") ' Put the app package name here
Dim in As Intent
in.Initialize("", "")
in.PutExtra("duplicate",False)
in.PutExtra("android.intent.extra.shortcut.INTENT", shortcutIntent)
in.PutExtra("android.intent.extra.shortcut.NAME", "b4ae") ' Put you're application name here
in.PutExtra("android.intent.extra.shortcut.ICON", LoadBitmap(File.DirAssets,"sin.png")) 
in.Action = "com.android.launcher.action.INSTALL_SHORTCUT"
Dim p As Phone
p.SendBroadcastIntent(in)
DoEvents
End Sub

متد حذف کردن

Sub remove
	Dim shortcutIntent As Intent
shortcutIntent.Initialize("", "")
shortcutIntent.Action=shortcutIntent.ACTION_MAIN
shortcutIntent.SetComponent("b4a.example/.main") ' Put the app package name here
Dim in As Intent
in.Initialize("", "")
in.PutExtra("android.intent.extra.shortcut.INTENT", shortcutIntent)
in.PutExtra("android.intent.extra.shortcut.NAME", "b4ae") ' Put you're application name here
in.Action = "com.android.launcher.action.UNINSTALL_SHORTCUT"
Dim p As Phone
p.SendBroadcastIntent(in)
DoEvents
End Sub

دسترسی های زیر رو هم اضافه کن

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

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

خدا بگم چیکار کنه این جعبه ابزارو :ireful:

آره منم نگا کردم دیدم اینکارو کرده 

پس باید راهشو پیدا کنیم :dance2:

قطعا باید فایل منیفست رو روش کار کرد یه جوری که بشه به همه اکتیویتی ها action.MAIN یا category.DEFAULT یا همچین چیزی اضافه بشه

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

 

متاسفانه  راهی نیست به صورت مستقیم چک کنیم که شورت کات توی هوم اسکرین هست یا نه البته شاید از طریق ContentResolver بشه ولی تو بیسیک نمیدونم میشه استفاده کرد یا نه

من چیزایی که به ذهنم میرسه اینه که دو تا باتن بزارین یکی برای اضافه کردن و یکی هم برای حذف کردن متدهای هردوشونو واست میذارم در ضمن تو متدی که شما استفاده کردین یه سری اشکالات بود که درست کردم

متد اضافه کردن

 

 

خیلی ممنون آقای شاهپیری عزیز

 

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

( البته توی برنامه جعبه ابزار این امکان هست که اگر از قبل وجو داشته باشه دیگه بوجود نمیاد و اگرم حذف کنیم دوباره ساخته میشه .البته دو ایراد داره 1-از توی برنامه نمیشه میانبر حذفش کرد2-وقتی میانبر توی صفحه هست و ما روی باتنایجاد میانبر لمس میکنیم پیغام میده میانبر ساخته شد درحالیکه قبلا وجود داشته)

ولی خاب بازم ماله جعبه ابزار قابله قبولتره تا ماله ما

 

بازم مرسی محمدرضا جان

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

خیلی ممنون آقای شاهپیری عزیز

 

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

( البته توی برنامه جعبه ابزار این امکان هست که اگر از قبل وجو داشته باشه دیگه بوجود نمیاد و اگرم حذف کنیم دوباره ساخته میشه .البته دو ایراد داره 1-از توی برنامه نمیشه میانبر حذفش کرد2-وقتی میانبر توی صفحه هست و ما روی باتنایجاد میانبر لمس میکنیم پیغام میده میانبر ساخته شد درحالیکه قبلا وجود داشته)

ولی خاب بازم ماله جعبه ابزار قابله قبولتره تا ماله ما

 

بازم مرسی محمدرضا جان

خواهش عزیز وظیفه اس

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

in.PutExtra("duplicate",False)
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

خواهش عزیز وظیفه اس

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

in.PutExtra("duplicate",False)

 

 

شرمنده محدرضا جان

 

من دقیق به کدهات توجه نکردم

 

این که از کدهای جعبه ابزار هم بهتره چون اگر از قبل وجود داشته باشه پیغام میده که از قبل وجود داره.اگر دستی حذف کردیم بازم میسازه . متد حذف کردن بصورت رویداد هم داریم دیگه عالی تر

 

یه دنیا مرسی

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...