ورود

View Full Version : تشخیص نصب بودن بازار



pouya1999best@g
دوشنبه 16 تیر 1393, 01:40 صبح
سلام؛
من این کد رو به هزار بدبختی از اینترنت پیدا کردم.:افسرده:
اما فکر میکنم ایراداتی داره؛
مثلا اگه بازار نصب باشه یک Toast نشون میده؛
اما اگه برنامه نصب نشده باشه،هنگ میکنه.
میخوام اگه بازار نصب نبود باز هم یک Toast نشون بده.
خواهشا برام اصلاحش کنید.:متفکر:



boolean installed = false;
while (!installed){
installed = appInstalledOrNot("com.farsitel.bazaar");
if(installed){
Toast.makeText(this,"App installed",Toast.LENGTH_SHORT).show();}}}
private boolean appInstalledOrNot(String uri) {
PackageManager pm = getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
app_installed = true;}
catch (PackageManager.NameNotFoundException e) {
app_installed = false;}
return app_installed;}}

reza_azizi2010
دوشنبه 16 تیر 1393, 02:47 صبح
ارین کد استفاده کنید، این تابع خروجی صحیح یا غلط داره !

public static boolean isPackageInstalled(String packagename, Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;
}
catch (NameNotFoundException e) {
return false;
}
}

pouya1999best@g
دوشنبه 16 تیر 1393, 02:59 صبح
اینجوری میشه؟؟؟
Toast نمایش داده نشد!!!

String packagename = "com.farsitel.bazaar";
public static boolean isPackageInstalled(String packagename, Context contex) {
PackageManager pm = contex.getPackageManager();
try{
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
Toast.makeText(contex,"نصبه",Toast.LENGTH_LONG).show();
return true;
}catch(NameNotFoundException e) {
Toast.makeText(contex,"نصب نیست",Toast.LENGTH_LONG).show();
return false;}}}

pouya1999best@g
دوشنبه 16 تیر 1393, 14:19 عصر
جواب بدید دوستان

pouya1999best@g
دوشنبه 16 تیر 1393, 23:59 عصر
58 دوست از این تاپیک دیدن کردند و هنوز راهنمایی نکردند:تشویق:

reza_azizi2010
سه شنبه 17 تیر 1393, 09:15 صبح
if(!isPackageInstalled(packagename, context)){
Toast.makeText(contex,"نصب نیست",Toast.LENGTH_LONG).show();
}

pouya1999best@g
سه شنبه 17 تیر 1393, 15:32 عصر
کد نهایی این شد:

String packagename = "com.farsitel.bazaar";
public static boolean isPackageInstalled(String packagename, Context context) {
PackageManager pm = context.getPackageManager();
if(!isPackageInstalled(packagename, context)){
Toast.makeText(context,"نصبه",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(context,"نصب نیست",Toast.LENGTH_LONG).show();
}try{
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;}
catch (NameNotFoundException e) {
return false;}}}

مشکلش اینه که نمیشه توی هیچ متدی ازش استفاده کرد؛
چه راهی رو پیشنهاد میکنید؟؟؟

reza_azizi2010
سه شنبه 17 تیر 1393, 17:54 عصر
دوست عزیز کدها رو چرا باهم قاطی کردین؟!
ببین من این کد رو میدم دیگه یهش دست نزن، شما این کد رو توی یکی از اکتیویتی ها (ترجیا اکتیوتی که اول شروع میشه) کپی کن و دیگه

public static boolean isPackageInstalled(String packagename, Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;
}
catch (NameNotFoundException e) {
return false;
}
}

بعدش واسه اینکه بتونی ازین کد استفاده کنی، هرجای برنامه که نیاز بود نصب بودن بازار رو چک کنی این کد رو مینویسی


if(!isPackageInstalled(packagename, context)){
Toast.makeText(contex,"نصب نیست",Toast.LENGTH_LONG).show();
}

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

pouya1999best@g
سه شنبه 17 تیر 1393, 18:26 عصر
با این کد مشکل دارم


package com.example.test1;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundExce ption;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
String packagename = "com.farsitel.bazaar";
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);}




public static boolean isPackageInstalled(String packagename,Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;}
catch (NameNotFoundException e) {
return false;}}




@Override
protected void onStart(){
if(!isPackageInstalled(packagename, context)){
Toast.makeText(getApplicationContext(),"نصب نیست",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"نصبه",Toast.LENGTH_LONG).show();
}
}}


اینو نوشتم فورس کلوز داد

reza_azizi2010
چهارشنبه 18 تیر 1393, 12:28 عصر
بررسی رو توی onStart نذارید، بذار توی onCreate بعدشم context رو مقدار دهی نکردین که

pouya1999best@g
چهارشنبه 18 تیر 1393, 18:45 عصر
میشه کد رو اصلاح و مرتب کنید؟؟؟
من مبتدی هستم و با این کد ها مشکل دارم:ناراحت:

reza_azizi2010
چهارشنبه 18 تیر 1393, 19:26 عصر
من کد رو اصلاح میکنم اما اگه بازم تغییرش بدین احتمالا خطا میده،


public class MainActivity extends Activity {
String packagename = "com.farsitel.bazaar";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_item);
if(!isPackageInstalled(packagename, MainActivity.this)){
Toast.makeText(getApplicationContext(),"نصب نیست",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"نصبه", Toast.LENGTH_LONG).show();
}

}




public static boolean isPackageInstalled(String packagename,Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;}
catch (NameNotFoundException e) {
return false;}}
}