<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>maven &#8211; Mahdi Tajik</title>
	<atom:link href="http://www.mahditajik.ir/tag/maven/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mahditajik.ir</link>
	<description>I&#039;m Mahdi Tajik. I am project manager and Full-stack Android developer. welcome to my personal website.</description>
	<lastBuildDate>Thu, 29 Nov 2018 14:18:55 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.6</generator>

<image>
	<url>http://www.mahditajik.ir/wp-content/uploads/2015/03/cropped-sample-logo-MT-2-32x32.png</url>
	<title>maven &#8211; Mahdi Tajik</title>
	<link>http://www.mahditajik.ir</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>کتابخانه Advanced Permission manager</title>
		<link>http://www.mahditajik.ir/%da%a9%d8%aa%d8%a7%d8%a8%d8%ae%d8%a7%d9%86%d9%87-advanced-permission-manager/</link>
					<comments>http://www.mahditajik.ir/%da%a9%d8%aa%d8%a7%d8%a8%d8%ae%d8%a7%d9%86%d9%87-advanced-permission-manager/#comments</comments>
		
		<dc:creator><![CDATA[mahdi]]></dc:creator>
		<pubDate>Tue, 28 Nov 2017 15:39:19 +0000</pubDate>
				<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[permission]]></category>
		<guid isPermaLink="false">http://www.mahditajik.ir/?p=2677</guid>

					<description><![CDATA[<p>Advanced Permission manager کتابخانه ای است که توسط آن از شر تمامی دردسر های مجوز های درحال اجرای اندروید خلاص می شوید. همانطور که می دانید تعدادی مجوز در اندروید جزو مجوز های خطرناک است که برای استفاده از آنها علاوه بر منیفست باید در حال اجرا نیز اجازه کاربر را بگیرید و روند گوناگونی ...</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/%da%a9%d8%aa%d8%a7%d8%a8%d8%ae%d8%a7%d9%86%d9%87-advanced-permission-manager/">کتابخانه Advanced Permission manager</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2678" src="http://www.mahditajik.ir/wp-content/uploads/2017/11/mahditajik.ir_lib_image_2.jpg" alt="" width="640" height="480" srcset="http://www.mahditajik.ir/wp-content/uploads/2017/11/mahditajik.ir_lib_image_2.jpg 640w, http://www.mahditajik.ir/wp-content/uploads/2017/11/mahditajik.ir_lib_image_2-300x225.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p style="text-align: justify;"><strong>Advanced Permission manager </strong>کتابخانه ای است که توسط آن از شر تمامی دردسر های مجوز های درحال اجرای اندروید خلاص می شوید. همانطور که می دانید تعدادی مجوز در اندروید جزو مجوز های خطرناک است که برای استفاده از آنها علاوه بر منیفست باید در حال اجرا نیز اجازه کاربر را بگیرید و روند گوناگونی دارد. لیست مجوز های خطرناک به شرح ذیل است:</p>
<pre class="crayon-plain-tag">READ_CALENDAR
WRITE_CALENDAR
CAMERA
READ_CONTACTS
WRITE_CONTACTS
GET_ACCOUNTS
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
RECORD_AUDIO
READ_PHONE_STATE
CALL_PHONE
READ_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS
BODY_SENSORS
SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE</pre>
<p style="text-align: justify;">حال ممکن است کاربر نه تنها اجازه ندهد بلکه گزینه &#8220;دیگر نشان نده&#8221; را انتخاب کند و برای رسیدگی کردن به این قضیه، چک های مختلفی انجام داد که خوشبختانه کتابخانه <strong>Advanced Permission manager</strong> همه این موارد را به عهده می گیرد.</p>
<p style="text-align: justify;">برای استفاده از این کتابخانه خط زیر را به گریدل برنامه اضافه کنید:</p>
<pre class="crayon-plain-tag">compile 'ir.mtajik.android:advancedPermissionsHandler:1.0.6'</pre>
<p style="text-align: justify;">کافی است  <strong>Activity</strong> خود را از <strong>PermissionHandlerActivity</strong> ارث بری کنید. سپس متد زیر را صدا کنید و دیگر نگران برسی کردن مجوز و مراحل دست و پا گیر آن نباشید. همه آن را کتابخانه بصورت اتومات مدیریت می کند.<strong><br />
</strong></p>
<pre class="crayon-plain-tag">String[] permissions = new String[] {Manifest.permission.SEND_SMS, 
Manifest.permission.WRITE_EXTERNAL_STORAGE , Manifest.permission.READ_EXTERNAL_STORAGE , ...}

boolean stickyMode = true;

askForPermission(permissions , stickyMode, new PermissionCallBack() {
                    
                    @Override
                    public void onPermissionsGranted() {  
                        Log.i("mahdi", "onPermissionsGranted: ");
                    }

                    @Override
                    public void onPermissionsDenied(String[] permissions) {
                        Log.i("mahdi", "onPermissionsDenied: ");
                    }
                });</pre>
<p style="text-align: justify;">روند گرفتن مجوز بدین شکل است:</p>
<p style="text-align: justify;"><strong>اول:</strong> برنامه اجازه تمامی مجوز های خواسته شده را به کاربر نمایش می دهد.<br />
<strong>دوم:</strong> سپس مجوزهای داده نشده در مرحله قبل با یک دیالوگ دیگر با پیغام جدید از کاربر خواسته می شود.<br />
<strong>سوم:</strong> اگر کاربر گزینه &#8220;دیگر به من نمایش نده&#8221; را انتخاب کرده باشد، تنظیمات برای گرفتن مجوزها باز می شود.<br />
<strong>چهارم:</strong> اگر همچنان کاربر مجوز نداد، کالبک <strong>onPermissionsDenied</strong> فراخوانی می شود.</p>
<p style="text-align: justify;">حال <strong>stickyMode </strong> مشخص می کند که تمام مراحل بالا در یک نشست اتفاق بیافتد یا اینکه خیر. استفاده از این کتابخانه باعث میشه که بدون نگرانی بابت مجوزها به قسمت های دیگر برنامه بپردازید. اگر درمورد پیاده سازی نکته، پیشنهاد، مشکل یا سوالی داشتید خوشحال می شم تا با من درمیان بگذارید.</p>
<p style="text-align: justify;"><a href="https://github.com/mahdit83/advancedPermissionHandler" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2146" src="http://www.mahditajik.ir/wp-content/uploads/2016/12/github_download.png" alt="github_download" width="230" height="70" /></a></p>
<p>لینک پروژه در Github</p>
<p style="text-align: left;"><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://github.com/mahdit83/advancedPermissionHandler" target="_blank" rel="noopener">https://github.com/mahdit83/advancedSmsManager</a></span></p>
<p>لینک پروژه در Bintray</p>
<p style="text-align: left;"><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://bintray.com/mahdi/maven/advancedPermissionsHandler" target="_blank" rel="noopener">https://bintray.com/mahdi/maven/advancedsmsmanager</a></span></p>
<p>لینک در android-arsenal</p>
<p style="text-align: left;"><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://android-arsenal.com/details/1/6510" target="_blank" rel="noopener">https://android-arsenal.com/details/1/6024</a></span></p>
<p>منبع: <a href="http://www.biitecode.ir" target="_blank" rel="noopener">بایت کد</a></p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/%da%a9%d8%aa%d8%a7%d8%a8%d8%ae%d8%a7%d9%86%d9%87-advanced-permission-manager/">کتابخانه Advanced Permission manager</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.mahditajik.ir/%da%a9%d8%aa%d8%a7%d8%a8%d8%ae%d8%a7%d9%86%d9%87-advanced-permission-manager/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>کتابخانه Advanced Sms manager</title>
		<link>http://www.mahditajik.ir/advanced-sms-manager/</link>
					<comments>http://www.mahditajik.ir/advanced-sms-manager/#respond</comments>
		
		<dc:creator><![CDATA[mahdi]]></dc:creator>
		<pubDate>Tue, 29 Aug 2017 12:48:43 +0000</pubDate>
				<category><![CDATA[برنامه های من]]></category>
		<category><![CDATA[jcenter]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[sms]]></category>
		<guid isPermaLink="false">http://www.mahditajik.ir/?p=2660</guid>

					<description><![CDATA[<p>AdvancedSmsManager کتابخانه پیشرفته ای است وظیفه ارسال sms  در اندروید را می توانید بطور کامل به آن محول کنید. همچین امکان ارسال پیام کوتاه از گوشی های دو سیم کارته با امکان انتخاب از کاربر نیز وجود خواهد داشت. (این امکان برای sdk بالای ۲۱ قابل استفاده است و در گوشی های پایین تر از Lollipopo ...</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/advanced-sms-manager/">کتابخانه Advanced Sms manager</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2665" src="http://www.mahditajik.ir/wp-content/uploads/2017/11/mahditajik.ir_lib_image.jpg" alt="" width="640" height="480" srcset="http://www.mahditajik.ir/wp-content/uploads/2017/11/mahditajik.ir_lib_image.jpg 640w, http://www.mahditajik.ir/wp-content/uploads/2017/11/mahditajik.ir_lib_image-300x225.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p style="text-align: justify;"><strong>AdvancedSmsManager</strong> کتابخانه پیشرفته ای است وظیفه ارسال <strong>sms </strong> در اندروید را می توانید بطور کامل به آن محول کنید. همچین امکان ارسال پیام کوتاه از گوشی های دو سیم کارته با امکان انتخاب از کاربر نیز وجود خواهد داشت. (این امکان برای sdk بالای ۲۱ قابل استفاده است و در گوشی های پایین تر از Lollipopo فعال نیست.) تلاشم در تهیه این کتابخانه محول کردن تمام امور به کتابخانه و فقط استفاده راحت از آن می باشد. در خود کتابخانه نیز تمامی بخش ها بصورت DI توسط <span style="color: #0000ff;"><a style="color: #0000ff;" href="http://www.mahditajik.ir/dagger2-simple-example/" target="_blank" rel="noopener">Dagger2</a></span> پیاده سازی شده است.</p>
<p style="text-align: justify;">برای استفاده از این کتابخانه خط زیر را در گریدل اپ بنویسید:</p>
<pre class="crayon-plain-tag">compile 'ir.mtajik.android:advancedsmsmanager:1.1.0'</pre>
<p style="text-align: justify;">کافیست به بیلدر کانتکست و شماره مقصد را بدهید، سپس می توانید از امکانات اختیاری به همراه <strong>with</strong> استفاده کنید. مثلا می توانید برای سیم کارت فیلتر بگذارید که مثلا فقط ایرانسل ارسال شود، همچنین دیالوگ های نمایشی به کاربر می تواند دیالوگ های پیش فرض برنامه باشد یا اینکه دیالوگ های شخصی شده شما.</p>
<p style="text-align: justify;">برای استفاده فقط کافیست دستور زیر را اجار کنید:</p>
<pre class="crayon-plain-tag">SmsHandler.builder(context, "+989120000000")
                .withCarrierNameFilter("MCI")
                .withCustomDialogForSendSms(R.layout.my_sms_dialog)
                .withCustomDialogForChoseSim(R.layout.simcard_choosing_dialog)
                .needToShowDialog(false)
                .build().sendSms(DIALOG_MESSAGE, SMS_BODY, new MySmsManager.SMSManagerCallBack() {
            @Override
            public void afterSuccessfulSMS(int smsId) {

            }

            @Override
            public void afterDelivered(int smsId) {

            }

            @Override
            public void afterUnSuccessfulSMS(int smsId, String message) {

            }

            @Override
            public void onCarrierNameNotMatch(int smsId, String message) {

            }
        });</pre>
<p style="text-align: justify;">همانطور که ملاحظه می نمایید چهار تا کالبک خواهد داشت که شما می توانید اتفاقات مورد نظر بعد از هرکدام را زیر آن ها بنویسید.</p>
<p><strong><span class="pl-en">afterSuccessfulSMS</span></strong></p>
<p>بعد از ارسال موفقیت آمیز اس ام اس.</p>
<p><strong><span class="pl-en">afterDelivered</span></strong></p>
<p>بعد از اینکه پیام کوتاه به مقصد رسید چه اتفاقی بیافتد.</p>
<p><strong><span class="pl-en">afterUnSuccessfulSMS</span></strong></p>
<p>بعد از ناموفق بودن ارسال چه اتفاقی بیافتد. ( دلیل عدم موفقیت بصورت استرینگ قابل دسترس است)</p>
<p><strong><span class="pl-en">onCarrierNameNotMatch</span></strong></p>
<p>وقتی اتفاق می افتد که سیمکارت انتخاب شده با فیلتر داده شده مطابقت ندارد. ( برای sdk بالای ۲۱ قابل استفاده است)</p>
<p>برای استفاده از این کتابخانه دو مجوز <pre class="crayon-plain-tag">Manifest.permission.SEND_SMS</pre>  و <pre class="crayon-plain-tag">Manifest.permission.READ_PHONE_STATE</pre>  باید گرفته باشید. توضیحات کامل و نحوه استفاده را می توایند در لینک Github ببینید. در صورتی که در پیاده سازی آن مشکل داشتید و ها هر سوال یا مطلب دیگری رو با من به اشتراک بگذارید.</p>
<p style="text-align: justify;"><a href="https://github.com/mahdit83/advancedSmsManager" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2146" src="http://www.mahditajik.ir/wp-content/uploads/2016/12/github_download.png" alt="github_download" width="230" height="70" /></a></p>
<p>لینک پروژه در Github</p>
<p style="text-align: left;"><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://github.com/mahdit83/advancedSmsManager" target="_blank" rel="noopener">https://github.com/mahdit83/advancedSmsManager</a></span></p>
<p>لینک پروژه در Bintray</p>
<p style="text-align: left;"><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://bintray.com/mahdi/maven/advancedsmsmanager" target="_blank" rel="noopener">https://bintray.com/mahdi/maven/advancedsmsmanager</a></span></p>
<p>لینک در android-arsenal</p>
<p style="text-align: left;"><span style="color: #3366ff;"><a style="color: #3366ff;" href="https://android-arsenal.com/details/1/6024" target="_blank" rel="noopener">https://android-arsenal.com/details/1/6024</a></span></p>
<p>منبع: <a href="http://www.biitecode.ir" target="_blank" rel="noopener">بایت کد</a></p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/advanced-sms-manager/">کتابخانه Advanced Sms manager</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.mahditajik.ir/advanced-sms-manager/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
