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

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

mjana6870  9 سال پیش  9 سال پیش
+4 0

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

0 0
اگر منظورتون بازار هست > خود بازار همچین API در ورژن 6 خودش به بعد ارائه داده < کافیه از اون API استفاده کنید (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
فرشاد خدامرادی  9 سال پیش
+7 0

کد کامل بروزرسانی خودکار از داخل Application

ابتدا دو کلاس زیر را ایجاد کنید ، سپس دو url باید به این کد بدید ،  یک فایل php که یک JSON هست و فیلدی داره که ورژن کد آپدیت جدید رو مشخص می کنه و دیگری مسیر APK ورژن جدید ، و به اینصورت عمل می کنه که اگه ورژن کد در url از ورژن کد برنامه موجود و در حال اجرا بزرگتر بود یک notification میاد و درصد دانلود رو هم نشون میده که بعد از اتمام دانلود خودکار پیغامی به کاربر جهت نصب نشون می ده.

 public class AutoUpdate {

	public static NotificationManager mNotifyManager;
	public static int id = 1;

	public static void Update(String apkurl) {
		try {
		

			mNotifyManager = (NotificationManager) G.context
					.getSystemService(G.context.NOTIFICATION_SERVICE);

			Builder mBuilder = new NotificationCompat.Builder(G.context);

			mBuilder.setContentTitle("your title").setContentText("your Content");

			mBuilder.setProgress(100, 0, false);
			mBuilder.setSmallIcon(R.drawable.logoupdate);

			mBuilder.setOngoing(true);

			
			mNotifyManager.notify(id, mBuilder.build());


			URL url = new URL(apkurl);

			HttpURLConnection c = (HttpURLConnection) url.openConnection();

			c.setRequestMethod("GET");
//اگر از POST استفاده می کنید این قسمت فعال شود
//			c.setDoOutput(true);

			c.connect();

			int lenghtOfFile = c.getContentLength();


			String PATH = Environment.getExternalStorageDirectory()
					+ "/download/";

			File file = new File(PATH);

			file.mkdirs();

			File outputFile = new File(file, "app.apk");

			FileOutputStream fos = new FileOutputStream(outputFile);

			InputStream is = c.getInputStream();

			byte[] buffer = new byte[1024];

			int len1 = 0;
			int total = 0;
			Log.i("updateTrace", "before While");

			while ((len1 = is.read(buffer)) != -1) {
				fos.write(buffer, 0, len1);
				total += len1;
				mBuilder.setProgress(100, (total * 100) / lenghtOfFile, false);
				mBuilder.setContentText("درحال دریافت نسخه جدید برنامه    "
						+ (total * 100) / lenghtOfFile + " % ");
				mNotifyManager.notify(id, mBuilder.build());
				Log.i("updateTrace", "build");

			}
			fos.close();
			is.close();

			Intent intent = new Intent(Intent.ACTION_VIEW);
			intent.setDataAndType(
					Uri.fromFile(new File(Environment
							.getExternalStorageDirectory()
							+ "/download/"
							+ "app.apk")),
					"application/vnd.android.package-archive");
			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			G.context.startActivity(intent);
			canelUpdate();

		} catch (IOException e) {
			canelUpdate();
			e.printStackTrace();

		}
	}

	public static void canelUpdate() {
		if (mNotifyManager != null) {
			mNotifyManager.cancel(id);
		}
	}

}
 public class CheckUpdate {

	public CheckUpdate() {

		HttpResponse response;
		try {

			HttpClient client = new DefaultHttpClient();

			HttpGet method = new HttpGet(
					"URL VerCode.php");
			response = client.execute(method);
			InputStream stream = response.getEntity().getContent();

			String result = inputstreamToString(stream);

			JSONObject object = new JSONObject(result);
			String state = object.getString("code");
			PackageInfo pInfo = G.context.getPackageManager().getPackageInfo(
					G.context.getPackageName(), 0);
			String version = pInfo.versionName;
			int verCode = pInfo.versionCode;
			int verUpdate = Integer.parseInt(state.toString());
			Log.i("updateTrace", "verCode : " + verCode + " verUpdate : "
					+ verUpdate);
			if (verUpdate > verCode) {
				if (NetworkHelper.checkNetwork(G.context)) {
					new UpdateApk().execute();
					G.ToastMakerLong("درحال دریافت نسخه جدید برنامه...");
				}
			}

		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	private static String inputstreamToString(InputStream inputStream) {
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				inputStream));
		StringBuilder builder = new StringBuilder();

		try {
			String line;
			while ((line = reader.readLine()) != null) {
				builder.append(line);
			}

			return builder.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return "";
	}

	private class UpdateApk extends AsyncTask {

		@Override
		protected Object doInBackground(Object... arg0) {

			try {
				Log.i("updateTrace", "Called AutoUpdate");
				AutoUpdate
						.Update("URL");


			} catch (Exception e) {

			}

			return null;
		}

	}

}
 permissions:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.DELETE_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 در نهایت در هر اکتیویتی که خواستید آپدیت چک و انجام بشه کد زیر رو بنویسید:
CheckUpdate check = new CheckUpdate();
پاسخ به سوال 
mjana6870  9 سال پیش
0 0

HttpGet method = new HttpGet("URL VerCode.php");

این بخش از کد شما چه کاری انجام میدهد؟ورودی تایع چیه؟

و یه سوال دیگه:

اگر ما بخواهیم فرآیند به روز رسانی رو از طریق FTP Server انجام بدیم باید چه جوری کد بنویسیم؟

تشکر.


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