آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
این سایت محصول قابل فروش ندارد و بخش تیکت و پشتیبانی آن غیر فعال است
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش ساخت دیالوگِ "به من رای میدی؟" در هنگام خروج از اپلیکیشن

sadra  11 سال پیش  11 سال پیش
+8 0

سلام. عصر همتون بخیر. میخواستم ببینم چطوری میتونم یه دکمه بسازم که لینک بشه به تمامی برنامه های بازار روی موبایل؟

میدونید چرا اینو میخوام؟ بر فرض مثال شما یه اپی تولید می کنید که روی چندتا بازار منتشرش می کنید. مثلا گوگل پلی ، بازار، کندو، مایکت، ایران اپس و ... . بعد میخوای بگی آقای کاربر اگه مثلا فلان اپلیکیشن رو میخوای روی دکمه زیر کلیک کن. اگه بخوایم لینک بدیم به مثلا فقط بازار ممکنه کاربر اصن بازار نداشته باشه، فقط مایکت داشته باشه یا فقط گوگل پلی داشته باشه. میخوام یه جوری باشه که خودش انتخاب کنه کدوم بازار و بعد بره توی سرچ اون بازار و اون اپ رو واسش بالا بیاره. مثل شکل زیر که من روی قسمت Remove Ads کلیک کردم گفت برو به یه مارکتی و نسخه پرمیوم رو دانلود کن بعد برام هرچی بازار بود رو باز کرد ( البته مرورگر ها رو هم باز کرده که اگه اپی نبود بره تو مرورگر که بصورت دیفالت لینک بود به گوگل پلی ) :

مشکل حل شد. آموزش ساخت دکمه "رای میدم" پاسخ بعدی

+1 0
عزیزم اون مارکته نه بازار , بازار یه مارکت هستش , جواب سوالت هم تو بازار من دیدم فکر کنم , برای تمام مارکت ها (11 سال پیش)
0 0
دوست عزیز اینکار فکرنکنم نیاز به الگوریتم خاصی داشته باشه، شما هر برنامه ای رو که در ارتباط با اینترنت باشه بر روی گوشیتون نصب باشه به همین شکل نمایش داده میشه! (11 سال پیش)
+1 0
عزیزم مارکت یعنی بازار. من منظورم معنی لغوی فارسی کلمه Market بود نه خود اپلیکیشن بازار. خواستم فارسی بگم وگرنه میگفتم AppStore با این حال ممنون مشکلمو حل کردم. (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
sadra  11 سال پیش
+21 0

آموزش ساخت دیالوگ "به من رای میدی"

شاید دیده باشید تو خیلی از نرم افزارا موقعی که میخواید خارج بشید از اپلیکیشن و دکمه Back رو که می زنید میئرسه که به من رای میدی؟ یا فلان و بهمان! حالا میخوام اون بهتون امروز آموزش بدم

کارهایی که باید انجام بدیم:

1- ایجاد تابع Vote me

2- اجرای تابع روی دکمه Back

1- ایجاد تابع Vote me

برای اینکار ابتدا یه تابع به اسم VoteMet ایجاد میکنیم:

private void VoteMe() {
}

بعد میایم واسش قالب تعریف می کنیم که اگه گوشی ساپوردت کرد قالب Holo.Light و اگه ساپورت نکرد و ورژن موبایل پایین بود Theme Dialog معمولی رو پیاده کنه ( نتیجه این رو در انتهای این مطلب در عکس خواهید دید )

 private void VoteMe() {

// For the Holo one on 3.0+ devices, fallback on 1.x/2.x devices:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
context = new ContextThemeWrapper(Main.this, android.R.style.Theme_Holo_Light);
} else {
context = new ContextThemeWrapper(Main.this, android.R.style.Theme_Dialog);
}

}

حالا میایم دایلوگمون رو میسازیم و براش titlr و description میزاریم:

 private void VoteMe() {

// For the Holo one on 3.0+ devices, fallback on 1.x/2.x devices:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
context = new ContextThemeWrapper(Main.this, android.R.style.Theme_Holo_Light);
} else {
context = new ContextThemeWrapper(Main.this, android.R.style.Theme_Dialog);
}

//Make Dialog
new AlertDialog.Builder(context)
.setTitle("اسم اپلیکیشن")
.setMessage("میشه به من رای یدی؟")

}

حالا برای این دیالوگ 3تا دکمه لازم داریم. "باشه رای میدم" ، "فعلا نه" ، "دیگه نشون نده"

وقتی کاربر روی باشه رای میدم کلیک کنه باید بره به یه مارکت که من براش کلیه مارکت هارو تعریف کردم به این صورت دکمه اول ساخته میشه ( البته بهش گقتم اگه کاربر هیچ اپلیکیشن مارکتی نداشت، بصورت دیفالت مرورگر رو باز کن و برو تی سرچ سایت بازار دنبالش بگرد ) :


//First Button
.setPositiveButton("باشه، رای میدم", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Handle a positive answer
try {
//If has Market
Uri uri = Uri.parse("market://details?id=" + getPackageName());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
//If hasn't any Market
Uri uri = Uri.parse("http://cafebazaar.ir/search/?l=&q=اسم+اپلیکیشن+مورد+نظر");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
})

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


//Second Button
.setNeutralButton("فعلا نه", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
})

میرسیم به دکمه آخر که " دیگه نشون نده" هست. برای این دکمه باید یه فیلد در SharedPrefrencess تعریف کنم که وقتی کاربر روش کلیک کرد دفعه دیگه که خواست دکمه Back رو بزنه دیگه این دیالوگ رو نشون نده.یه  کلیک با نام Votechek و فیلد chek_show که یه استرینگ تو خودش ذخیره میکنه و چیز خاصی نیست. هرچی دوست داشتین جاش بزارین. بعدا تو مرحله بعد و دکمه Back میبینید که برای چی واقعا ساخته شد. بعد از اینکه کاربر روش کلیک کرد و مقدار ساخته شد، ائلیکیشن رو میبنده:

	//Third Button
.setNegativeButton("دیگه نشون نده", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Handle a negative answer
SharedPreferences pref = getApplicationContext().getSharedPreferences("Votecheck", 0);
Editor editor = pref.edit();
editor.putString("check_show", "false");
editor.commit(); // commit changes
finish();
}
})

در آخر کار هم میایم یه آیکون اگه دوست داشتیم واسش تعریف میکنیم و دستور show به دیالوگ رو میدیم که کد کامل تابع VoteMe به شرح زیر:

 private void VoteMe() {

// For the Holo one on 3.0+ devices, fallback on 1.x/2.x devices:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
context = new ContextThemeWrapper(Main.this, android.R.style.Theme_Holo_Light);
} else {
context = new ContextThemeWrapper(Main.this, android.R.style.Theme_Dialog);
}

//Make Dialog
new AlertDialog.Builder(context)
.setTitle("اسم اپلیکیشن")
.setMessage("میشه به من رای یدی؟")

//First Button
.setPositiveButton("باشه، رای میدم", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Handle a positive answer
try {
//If has Market
Uri uri = Uri.parse("market://details?id=" + getPackageName());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
//If hasn't any Market
Uri uri = Uri.parse("http://cafebazaar.ir/search/?l=&q=اسم+اپلیکیشن+مورد+نظر");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
})

//Second Button
.setNeutralButton("فعلا نه", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
})

//Third Button
.setNegativeButton("دیگه نشون نده", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Handle a negative answer
SharedPreferences pref = getApplicationContext().getSharedPreferences("Votecheck", 0);
Editor editor = pref.edit();
editor.putString("check_show", "false");
editor.commit(); // commit changes
finish();
}
})

.setIcon(R.drawable.MY_ic)
.show();

}

حالا میایم مرحله 2 و تعریف تابع برای دکمه Back و اجرای تابع VoteMe

در اینجا ما میایم و با اکتیویتی مون میگیم که آقا هروق روی دکمه Back کلیک شد. شما از SharedPrefrencess کلیک VoteMe فیلد chek_show چک کن، اگر عبارتی چیزی ذخیره نشده بود (یعنی هنوز کاربر تا به حال روی دکمه دیگه نشون نده کلیک نکرده بود) تابع دیالوگ VoteMe رو اجرا کن. اگه نه که شده بود و مقداری ثبت شده و کاربر دلش نمیخواد نشون بدی دیگه نشون نده و یه راست برنامه رو ببند. کدش میشه این:

 @Override
public void onBackPressed() {
SharedPreferences pref = getApplicationContext().getSharedPreferences("Votecheck", 0);
Editor editor = pref.edit();
checkme=pref.getString("check_show", null);

if(checkme==null){
VoteMe();
}else{
finish();
}

}

و در پایان این چیزی بود که من واسه اپلیکیشن خودم ساختم، وقتی کاربر روی Back کلیک کرد میشه عکس 1 و وقتی روی "باشه رای میدم" کلیک کرد لیست اپلیکیشن هارو باز میکنه و کاربر میتونه به خواسته خودش به هر مارکتی که دوست داشت بره و اگه برنامتون اونجا بود بره و لایک بزنه یا بخرتش:

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

//For all Markets
Uri uri = Uri.parse("market://details?id=" + getPackageName());

//Changed to Just Bazar Makret
Uri uri = Uri.parse("bazar://details?id=" + getPackageName());

 منتظر لایکها و نظراتتون هستم :P


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .