Seven7up

توسعه دهنده اندروید
  • تعداد ارسال ها

    102
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    17

تمامی ارسال های Seven7up

  1. سلام گردل رو از حالت افلاین خارج کنید و بعد شیلتر بزنید و بعد دوباره سینک کنید اندروید استودیو رو
  2. سلام من روشی رو میگم تست کنید اول این که بیاید یک دیتا بیس ایجاد کنید برای اپ حالا sqlit میتونه باشه بعد به وسیله تابع file_get_contents توی php سورس اون صفحه رو کامل بگیرید و توی پایگاه داده ذخیره کنید و بعد از داخل دیتا بیس سورس رو توی وب ویو نمایش بدید این جوری میتونید هر بار صفحه تغیراتی ایجاد کرد اطلاعاتش رو بگیرید
  3. سلام بهترین کار این هستش شمانسخه کامل اندروید استودیوکه sdk همراه خودش داره حدودا 2 گیگ هستش اون رو دانلود کنید و همراه با Sdk اون رو نصب کنید بدون مشکل بالا میاد احتمال داره sdk های که میزارند برای دنلود ناقص باشند که البته اکثرا اینجوری هستند و باید یکی یکی پلاگینها رو دانلود کنید
  4. سلام میشه روی ویندوز هستش نصب کرد مهم منابع سیستم رم و سی پیو هستش دوم این که مشکلر از ادرس دهی sdk شما هستش ادرس دقیق پوشه sdk رو به برنامه بدید
  5. سلام این نیاز داره که گرادل رو آپ دیت کنید پیشنهاد میکنم کلا ادروید استودیو رو به نسخه 2.3.3 ارتقا بدید
  6. با سلام در این تاپیک با نحویه کد و دیکد کردن اطلاعات بین اندروید وسرور آشنا میشوید و میتوانید اطلاعات رو به صورت امن بین کلاینت و سرور رد و بدل کنید. اول این کلاس php را به سرور اضافه کنید <?php class MCrypt { private $iv = 'fedcba9876543210'; #Same as in JAVA private $key = '0123456789abcdef'; #Same as in JAVA function __construct() { } function encrypt($str) { //$key = $this->hex2bin($key); $iv = $this->iv; $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv); mcrypt_generic_init($td, $this->key, $iv); $encrypted = mcrypt_generic($td, $str); mcrypt_generic_deinit($td); mcrypt_module_close($td); return bin2hex($encrypted); } function decrypt($code) { //$key = $this->hex2bin($key); $code = $this->hex2bin($code); $iv = $this->iv; $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv); mcrypt_generic_init($td, $this->key, $iv); $decrypted = mdecrypt_generic($td, $code); mcrypt_generic_deinit($td); mcrypt_module_close($td); return utf8_encode(trim($decrypted)); } protected function hex2bin($hexdata) { $bindata = ''; for ($i = 0; $i < strlen($hexdata); $i += 2) { $bindata .= chr(hexdec(substr($hexdata, $i, 2))); } return $bindata; } } و بعد از اون این کلاس جاوا رو به پروژه خودتون اضافه کنید import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class MCrypt { private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!) private IvParameterSpec ivspec; private SecretKeySpec keyspec; private Cipher cipher; private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!) public MCrypt() { ivspec = new IvParameterSpec(iv.getBytes()); keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES"); try { cipher = Cipher.getInstance("AES/CBC/NoPadding"); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public byte[] encrypt(String text) throws Exception { if(text == null || text.length() == 0) throw new Exception("Empty string"); byte[] encrypted = null; try { cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); encrypted = cipher.doFinal(padString(text).getBytes()); } catch (Exception e) { throw new Exception("[encrypt] " + e.getMessage()); } return encrypted; } public byte[] decrypt(String code) throws Exception { if(code == null || code.length() == 0) throw new Exception("Empty string"); byte[] decrypted = null; try { cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); decrypted = cipher.doFinal(hexToBytes(code)); } catch (Exception e) { throw new Exception("[decrypt] " + e.getMessage()); } return decrypted; } public static String bytesToHex(byte[] data) { if (data==null) { return null; } int len = data.length; String str = ""; for (int i=0; i<len; i++) { if ((data[i]&0xFF)<16) str = str + "0" + java.lang.Integer.toHexString(data[i]&0xFF); else str = str + java.lang.Integer.toHexString(data[i]&0xFF); } return str; } public static byte[] hexToBytes(String str) { if (str==null) { return null; } else if (str.length() < 2) { return null; } else { int len = str.length() / 2; byte[] buffer = new byte[len]; for (int i=0; i<len; i++) { buffer[i] = (byte) Integer.parseInt(str.substring(i*2,i*2+2),16); } return buffer; } } private static String padString(String source) { char paddingChar = ' '; int size = 16; int x = source.length() % size; int padLength = size - x; for (int i = 0; i < padLength; i++) { source += paddingChar; } return source; } } حا الا که کلاس های بالا رو به پروژه و سرور اضافه کردید نوبت میرسه به رد بدل کردن اطلاعات میشه برای وارد کردن کلاس php به فایل های php از include استفاده کنید به این صورت توجه کنید که لاس در کنار فایل ها باید باشه و گر نه باید مسیر کامل رو هم بدید include('myclass.php'); توی دو کلاس دو متغییر وجود دارند که باید در هر دو کلاس متغییر (دو متغییر در جاوا و دوتا در سمت سرور ) شبیه به هم باشند و گر نه شناسای مقادیر کد شده مشکل و عملا دیکد نمیشوند این متغییر ها قدرت کد شدن داده رو افزایش می دهند متغییر ها در جاوا private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!) private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!) متغییر ها در سمت php private $iv = 'fedcba9876543210'; #Same as in JAVA private $key = '0123456789abcdef'; #Same as in JAVA خب کد و دیکد کردن مقدار در جاوا رو به این صورت تعریف میکنیم اول میای یک شیئ از کلاس ایجاد میکنیم mcrypt = new MCrypt(); اول کد اطلاعات رو کد میکنیم بعد مقادیر رو به صورت bytesToHex در یک متغییر قرار میدیم و بعد به وسیله encrypt مقدار رو کد میکنیم (این مقدار کد شده هستش) String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("Text to Encrypt") ); برای دیکد کردن کافیه متغیر رو به درون تابع decrypt قرار بدیم String decrypted = new String( mcrypt.decrypt( encrypted ) ); کا ما در سمت اندروید تموم شد و مقدار کد و دیکد کردیم کد های تکمیلی جاوا mcrypt = new MCrypt(); /* Encrypt */ String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("Text to Encrypt") ); /* Decrypt */ String decrypted = new String( mcrypt.decrypt( encrypted ) ); خب حالا سمت php باز میایم یک شیئ ایجاد میکنیم $mcrypt = new MCrypt(); ابتدا میایم مقدار رو کد میکنیم $encrypted = $mcrypt->encrypt("Text to encrypt"); سپس همون مقدار رو نیز دیکد میکنیم $decrypted = $mcrypt->decrypt($encrypted); کد های تکمیلی php $mcrypt = new MCrypt(); #Encrypt $encrypted = $mcrypt->encrypt("Text to encrypt"); #Decrypt $decrypted = $mcrypt->decrypt($encrypted); امید وارم آموزش مفیدی برای شما باشه من الله التوفیق
  7. بله میشه ولی باید در هر دو طرف یکی باشند یعنی سمت php و سمت جاوا
  8. سلام من بر حسب این نوشتم واستون flowerList= parseJson(jsonstring); filteredContacts=new ArrayList<>(); for (int i = 0; i < flowerList.size(); i++){ String firstName=flowerList.get(i).getName(); if (firstName.contains(edt.getText().toString())){ filteredContacts.add(flowerList.get(i)); } } کدی که نوشتم int index=0; index = filteredContacts.indexOf(flowerList.get(i)); if(index>0){ filteredContacts.add(flowerList.get(i)); }
  9. باید قبل از درج در آداپتر لیست ویو بیاید بگید اگر این مورد در لیست بود دیگه درج نکن کدتون بزارید بهتر میشه راهنمایی کرد
  10. خدمت شما if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) { requestPermissions(new String[]{ android.Manifest.permission.WRITE_EXTERNAL_STORAGE , android.Manifest.permission.READ_EXTERNAL_STORAGE , android.Manifest.permission.READ_PHONE_STATE }, REQUEST_INTERNET); }
  11. بله بجای 127.0.0.1 ای پی امولاتوری که باهاش کار میکنید بزارید
  12. از این کد استفاده کنید private int REQUEST_INTERNET = 1; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) { requestPermissions(new String[]{ android.Manifest.permission.WRITE_EXTERNAL_STORAGE , android.Manifest.permission.READ_EXTERNAL_STORAGE , android.Manifest.permission.READ_PHONE_STATE }, REQUEST_INTERNET); }
  13. سلام استاد شما باید در دیتا بیس بجای عبارت localhost اگر با جنی موشن اجرا میکنید ایپی 10.0.3.2 و اگر در خود شبیه ساز اندروید فکر کنم ای پی 10.0.2.2 رو بزارید تا جواب بگیرید چون شبیه ساز ها عبارت localhost رو نمیشناسند
  14. سلام داره میگه مسیر نباید خالی null باشه Path must not be empty. بجای post.getPostImageUrl().replace("localhost","192.168.1.103") توی کدتون باید مسیر عکس رو بزارید این مقدار به احتمال زیاد داره null بر میگردون
  15. با سلام زرین پال اومده کتاب خانه ای ایجاد کرده که میشه به راحتی بدون نوشتن کد های سمت سرور درون برنامه یک درون پرداختی ایجاد کرد که میشه خود برنامه نویس امنیتش رو تامیین کنه خب من هم اومدم آموزش ویدئوی این کتاب خانه رو ظبط کرد که برای شما قرار میدم آقای سرسیفی من برای اینکه به زرین پال بفرستم توی پیکو فایل آپلود کردم اگر میشه خودتون توی سایت ارسال کنید و اتچ کنید سپاس دانلود از سرور انجمن اندروید ایران zarinpalpayment.mp4 لینک کمکی : لینک دانلود
  16. سلام <?php echo $_POST['Test']; echo $_GET['Test']; زمانی که از متد POST برای ارسال استفاده میکنید از $_POST استفاده کنید زمانی که از GET هم تابع $_GET ببینید مقدار test اسم اون فیلدی هستش که دارید از سمت اندروید میفرستید فیلد ی که از سمت اندروید دارید میفرستید به صورت زیر هستش .addBodyParameter("Test", "مقدار ارسالی")
  17. سلام یه مدت پیش داشتم توی اینترنت گشت میزدم که به یک کتابخانه ای خیلی خوبی برخورد کردم که کار رو برای ارتباط با سرور بهتر از هر کتاب خانه ای راحت تر کرده اینجا آموزش این کتاب خانه رو به صورت متنی قرار خواهم داد ولی بعدا به صورت ویدئو در قالب یک پروژه کامل این کتاب خانه رو آموزش میدم. ویژگی های مهم این کتاب خانه جدا کردن متد های پست ، گت ، داشتن دانلود منیجر در خود کتاب خانه ، و هم چنین آپلود منیجر که این کتاب خونه رو از همه متمایز کرده و سرعت خوبی هم داره خب بریم سر آموزش اول مییایم به وسیله گردل کتاب خونه رو به پروژه اضافه میکنیم compile 'com.amitshekhar.android:android-networking:1.0.0' بعد به منی فیست دسترسی به اینترنت رو میدیم <uses-permission android:name="android.permission.INTERNET" /> بعد از اضافه شدن کتابخانه به پروژه و تعریف دسترسی حالا توی اکتیویتی که میخوایم عملیات ارسال و دریافت رو انجام بدیم اول میای کد زیر رو توی بخش OnCreate پروژه قرار میدیم تا کتابخانه اینشیالایز بشه AndroidNetworking.initialize(getApplicationContext()); بعد از این که کتابخانه آماده شد حالا میریم سراغ متد های ارسال و دریافت ابتدا متد GET AndroidNetworking.get("http://yourDomin.com/{pageNumber}") .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") .setTag("test") .setPriority(Priority.LOW) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); بجای yourDomin.com باید ادرس دامنه و فایل رو قرار بدید مقادیر ارسالی رو در این سه بخش قرار میدیم .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") البته این سه پارامتر قابل اضافه شدن هستند حالا متد Post AndroidNetworking.post("http://yourDomin.com/createAnUser") .addBodyParameter("firstname", "Amit") .addBodyParameter("lastname", "Shekhar") .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); شما میتوانید مقادیر رو در پارمتر addBodyParameter قرار بدید البته شما میتونید اطلاعات رو به صورت یک فایل ، ابجکت و جیسون هم بفرستید در زیل سه نوع ارسال وجود دارد User user = new User(); user.firstname = "Amit"; user.lastname = "Shekhar"; AndroidNetworking.post("http://yourDomin.com/createUser") .addBodyParameter(user) // posting java object .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("firstname", "Amit"); jsonObject.put("lastname", "Shekhar"); } catch (JSONException e) { e.printStackTrace(); } AndroidNetworking.post("hhttp://yourDomin.com/createUser") .addJSONObjectBody(jsonObject) // posting json .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); AndroidNetworking.post("http://yourDomin.com/postFile") .addFileBody(file) // posting any type of file .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); خوب مقادیر برگشتی در متد زیر به صورت یک جیسون ابجکت برگشت داده میشوند ( این متد در خود متد گت و پست هست ) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); در صورتی که جواب برگشت داده شد در onResponse به صورت جییسون ابجکت ذخیره میشود و اگر خطای رخ داد در متد onError برگشت داده میشود خب حالا اگر میخواید یک فایلی رو از ادرسی دانلود کنید میتونید از متد ذیل استفاده کنید AndroidNetworking.download(url,dirPath,fileName) .setTag("downloadTest") .setPriority(Priority.MEDIUM) .build() .setDownloadProgressListener(new DownloadProgressListener() { @Override public void onProgress(long bytesDownloaded, long totalBytes) { // do anything with progress } }) .startDownload(new DownloadListener() { @Override public void onDownloadComplete() { // do anything after completion } @Override public void onError(ANError error) { // handle error } }); url ادرس فایل dirPath ادرس محل ذخیره فایل fileName نمای که میخواید فایل بر روی دیوایس ذخیره بشه متد setDownloadProgressListener وضعیت دانلود رو برمیگردونه متد startDownload زمانی که دانلود شروع شد منتظر میشه که دانلود به پایان میرسه یا خیر که دو متد داره متد onDownloadComplete زمانی که دانلود به اتمام ریسدو فایل دانلود شد مقداریرو بر میگردونه و اگر خطای رخ داد توسط متد onError برگشت داده میشه برای آپلود میتونید از متد زیر استفاده کنید AndroidNetworking.upload(url) .addMultipartFile("image",file) .addMultipartParameter("key","value") .setTag("uploadTest") .setPriority(Priority.HIGH) .build() .setUploadProgressListener(new UploadProgressListener() { @Override public void onProgress(long bytesUploaded, long totalBytes) { // do anything with progress } }) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); فایل را به وسیله متد addMultipartFile میتوانید ارسال کنید نمایش تصویر به صورت مستقیم از اینترنت به وسیله این کتابخانه میتونید تصویری رو بدون نیزا به کتابخانه های مانند پیکاسو و گلید در ایمیج ویوی خود تابخانه نمایش بدید <com.androidnetworking.widget.ANImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center" /> imageView.setDefaultImageResId(R.drawable.default); imageView.setErrorImageResId(R.drawable.error); imageView.setImageUrl(imageUrl); گرفتن Bitmap از ادرس همراه با یکسری مقادیر AndroidNetworking.get(imageUrl) .setTag("imageRequestTag") .setPriority(Priority.MEDIUM) .setBitmapMaxHeight(100) .setBitmapMaxWidth(100) .setBitmapConfig(Bitmap.Config.ARGB_8888) .build() .getAsBitmap(new BitmapRequestListener() { @Override public void onResponse(Bitmap bitmap) { // do anything with bitmap } @Override public void onError(ANError error) { // handle error } }); خب تا اینجا متد های مهم این کتاتخانه رو گفتم البته متد های دیگری هم داره که ادرس مستقیم کتابخانه رو میزارم تا استفاده کنید https://github.com/amitshekhariitbhu/Fast-Android-Networking امید وارم که این کتابخانه و این آموزش مفید باشد
  18. سلام دوستان عزیز این فیلم آموزشی یاد میگیریم چطوری یک فرم ارتباط با ما در برنامه ایجاد کنیم شما بعد از یاد گیری این آموزش میتونید انواع برنامه های ارتباط با سرور رو به راحتی بنویسید. لینک دانلود فیلم : دانلود از پیکو فایل
  19. سلام در این بخش آموزشی ظبط کردم که به وسیله ان می توانید یک تایید موبایل مانند واتساپ ایجاد کنید من سعی کردم آموزش کامل روان و ساده باشه برای همین از جملات سخت و غییر قابل درک استفاده نکرده ام این آموزش به وسیله کتاب خانه رتروفیت می باشد در سمت سرور من از دیتا بیس استفاده نکردم شما میتوانید به راحتی از ان استفاده کنید امید وارم آموزش مفید و کاربردی باشد لینک دانلود : دانلود
  20. با سلام خدمت دوستان عزیز خیلی از دوستان رو دیدم که تلاش میکردن سورس تلگرام را بدون خطا اجرا کنند ولی با مشکل برخورد میکردند تصمیم گرفتم این فیلم آموزشی رو ظبط کنم و برای یاد گیری عزیزان روی سایت قرار بدم با این ففیلم آموزشی شما میتوانید بدون هیچ مشکلی سورس تلگرام را بر روی شبیه ساز و هر نوع گوشی دیگری اجرا کنید آموزش پولی هستش که رایگان شده توسط صاحب آموزش لینک دانلود :دانلود TelegramSource_errors.mp4
  21. ورژن گردل رو بیارید روی 2.2.2 ببینید درست میشه com.android.tools.build:gradle:2.2.2