بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

توابع و کلاسهای کوچیک و مفید ( مشارکت کنید )

مدیریت گفتگو
طاهر 11 سال پیش
آخرین تغییر: 9 سال پیش

با سلام

در این تایپیک قصد دارم یکسری توابع و کلاسهای مفید رو که خودم در برنامه ها استفاده میکنم ، اینجا بزارم

تا مورد استفاده دوستان قرار بگیره

البته این رو هم بگم که بنده توابع رو بسته به نیاز خودم طراحی میکنم .

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

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

این توابع فقط برای ایده گرفتن میتونه مورد استفاده بشه و بسته به نیاز خودتون تغییرش بدین

برای هر تابع فقط در زیر همون پست نظر بدین از ارسال پست های جدید خودداری کنید

در صورتیکه برای یه تابع روش بهتری دارید یه تابع نوشته در سایت در یک تایپیک جداگانه منتشر کنید و لینکش رو در زیر پست همون تابع قرار بدید.

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

لیست توابع :

1.  یه تابع کوچیک برای گرفتن تصاویر از پوشه asset

2. دو تابع برای تبدیل عکس ذخیره شده در دیتابیس بصورت bite[] به  bitmap  و drawable

3. بررسی وضعیت دسترسی به اینترنت

4. خواندن یک فایل متنی از پوشه  assets

5. خواندن یک فایل متنی از پوشه  raw

 6. اشتراک فایل apk برنامه در داخل برنامه

7. تابع خروج از برنامه

8. کلاس اسکرول افقی که حالت پیش فرض اون سمت راست باشه.

9. ارسال بازخورد به فیس بوک

10. ارسال بازخورد به اینستگرام

11. خروج از برنامه با دوبار زدن دکمه بازگشت

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

13. حذف یک پوشه به همراه کلیه محتویاتش شامل فایل ها و پوشه ها

14. بررسی وضعیت دسترسی به فلاش دوربین

15. نمایش پیغام بصورت toast در هر جای برنامه

نظرات

Mseif 11 سال پیش
کاره بسیار جالب و مفیدیه انشالله موفق باشید در ضمن توضیحی مختصر هم برای هر تابع یا کلاس داده بشه خیلی عالی میشه سپاس
نورحسینی 11 سال پیش
این خیلی خوبه طاهر جان ولی بهتر اینه که شما هم مثل دوستان دیگه در این تاپیک لینک یک پست باز کنید و مطالبتون رو به صلاحدید خودتون به رایگان یا برای معاوضه یا فروش بزارید که بانک سورسمون زودتر آماده بشه و در یک جا متمرکز باشه . باز هم هر طور میل شماست .
طاهر 11 سال پیش
تا قسمت ویکی سایت راه بیفته این تایپیک میتونه مفید باشه برای خیلی ها
hadi47 11 سال پیش
با سلام و خیلی ممنون که اطلاعات و تجربیات خود را به اشتراک می گذارید با تشکر
goorgool 11 سال پیش
آقا دستت درد نکنه
msadesign 11 سال پیش
یکی از بهترین تاپیک های این مجموعه
dabal 11 سال پیش
به نظر من اگه یه توضیح کوچیک هم در زیر توابع داده بشه بد نیست
nooriDeveloper 9 سال پیش
دوست عزیز @طاهر، یه پیشنهاد دارم، با توجه به اینکه تعداد کدها داره زیاد میشه برای جستجوی سریعتر کدها و همچنین جلوگیری از درج کدهای تکراری لطفا تو همین اول پست لیست تمام کدهایی که تا الان گذاشته شده (منظورم نام شون هست) رو بزارید و کدهای جدید رو به انتهای لیست اضافه کنید.

پاسخ‌ها 58

طاهر 11 سال پیش

یه تابع کوچیک برای گرفتن تصاویر از پوشه asset

 public static Bitmap getBitmapFromAsset(Context paramContext, String strName)
{
AssetManager assetManager = paramContext.getAssets();
InputStream istr = null;

try {
istr = assetManager.open(strName);
}
catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}

نظرات

طاهر 11 سال پیش

دو تابع برای تبدیل عکس ذخیره شده در دیتابیس بصورت bite[] به  bitmap  و drawable 

 public static Drawable convertImageByteToDrawable(byte[] paramByte, String paramString)
{
return (Drawable) Drawable.createFromStream(new ByteArrayInputStream(paramByte), paramString);
}



public static Bitmap convertImageByteToBitmap(byte[] paramByte)
{
//Drawable localByteArrayInputStream = ConvertImageByteToDrawable(paramByte, paramString);
ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(paramByte);
//Drawable.createFromStream(localByteArrayInputStream, paramString);
return (Bitmap) BitmapFactory.decodeStream(localByteArrayInputStream);
}

نظرات

طاهر 11 سال پیش

بررسی نصب بودن یک برنامه

 /**
* returns True OR False
* */
public static boolean isPackageInstalled(Context context, String packagename) {
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo;
try {
//pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
appInfo = pm.getApplicationInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;
}
catch (NameNotFoundException e) {
return false;
}
}

نظرات

siam_1365 11 سال پیش
مطمئنید این وضعیت دسترسی به اینترنت رو چک میکنه؟ فکر میکنم تیتر رو اشتباه نوشتید ;)
طاهر 11 سال پیش
درسته اصلاح کردم ممنون از یاداوری
طاهر 11 سال پیش

خیلی از موارد هست که اسم یک drawable رو داریم و میخوایم تصویر رو با اون عوض کنید یا بکگراند رو به اون تغییر بدیم

بهترین راه اینه که resourceid اش رو بدست بیارم و از توابع مربوطه استفاده کنیم :

  public static int getResourceId(Context context, String identifier, String value) {
try {
int resourceId = context.getResources().getIdentifier(value, identifier, context.getPackageName());
return resourceId;
}
catch (Exception e) {
e.printStackTrace();
return 0;
}
}

مثال :

ImageView imgCat= (ImageView) findViewById(R.id.imgCat);
int resourceId = getResourceId(G.context, "drawable", item.icon);
if (resourceId > 0)
imgCat.setImageResource(resourceId);
else
imgCat.setVisibility(View.INVISIBLE);

 

 

نظرات

GoldKing 9 سال پیش
سلام و خسته نباشید به شما دوست عزیز من تازه کار هستم و به این قطعه کد شما خیلی نیاز دارم ولی اگه امکان داره یکم برام توضیح بده. در تابع getresourceId به جای ارگمان String value چه چیزی باید ارسال بشه به تابع؟ و نیز برای من به item.icon گیر میده. میشه یه توضیح دربارش بهم بدی؟ ممنون میشم اگه به تلگرامم پیام بدی یا email بفرستی برام @mammadgoldking mammad.ghaemi@gmail.com
GoldKing 9 سال پیش
email: mammad.ghaemi@gmail.com telegram:@mammadgoldking
طاهر 11 سال پیش

خواندن یک فایل متنی از پوشه  assets

  /*
* Read text file from assets folder
*/
public static void readFileFromAssetsFolder(Context paramContext, String paramStringFileName, TextView paramViewTextView, Boolean paramBooleanShowHtml) throws IOException {

InputStream inputStream = paramContext.getAssets().open(paramStringFileName);

StringBuilder text = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
try {
String line;
while ((line = reader.readLine()) != null) {
text.append(line);
text.append('\n');
}
if (paramBooleanShowHtml)
paramViewTextView.setText(Html.fromHtml(text.toString()));
else
paramViewTextView.setText(text);

} finally {
reader.close();

}

}

نظرات

طاهر 11 سال پیش

خواندن فایل متنی از پوشه raw

 /*
* Read text file from raw folder
*/
public static void readFileFromRawFolder(Context paramContext, int paramIntFileName, TextView paramViewTextView, Boolean paramBooleanShowHtml) throws IOException {

InputStream inputStream = paramContext.getResources().openRawResource(paramIntFileName);
StringBuilder text = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String line;
while ((line = reader.readLine()) != null) {
text.append(line);
text.append('\n');
}
if (paramBooleanShowHtml)
paramViewTextView.setText(Html.fromHtml(text.toString()));
else
paramViewTextView.setText(text);

} finally {
reader.close();

}

}

نظرات

Hossein Kurd 11 سال پیش

جسارتا

خواندن یک فایل متنی از asset


try { String body = new Scanner(G.appConfigs.currentActivity.getAssets().open("contact.txt")).useDelimiter("\\A").next(); }catch(Exception e){ Log.e(G.Logs.Error, "Error To Read 'contact.txt' In Asset: " + e); ExceptionHelper.catchMessage(e); }

نظرات

طاهر 11 سال پیش
برادر بصورت یه تابع دربیاری خیلی بهتره ضمنا اولین پست رو هم یه مطالعه میکردی
MEHDI007 11 سال پیش

ببخشید گفتم ما هم دانش کممون رو اشتراک بگذاریم

برای گرفتن (Android version) و API level

(Android version)ذخیره کردن آن در یک رشته (String) کد زیر:

 String androidOS = Build.VERSION.RELEASE;

 API LEVEL ذخیره کردن آن در یک رشته (int) کد زیر:

 int currentapiVersion = android.os.Build.VERSION.SDK_INT;

نظرات

طاهر 11 سال پیش

اشتراک فایل apk برنامه در داخل برنامه

 public static void sendAppItself(Activity paramActivity, String paramStringToastMsg) throws IOException {
Toast.makeText(paramActivity, paramStringToastMsg, Toast.LENGTH_LONG).show();
PackageManager pm = paramActivity.getPackageManager();
ApplicationInfo appInfo;
try {
appInfo = pm.getApplicationInfo(paramActivity.getPackageName(),
PackageManager.GET_META_DATA);
Intent sendBt = new Intent(Intent.ACTION_SEND);
// NOT THIS! sendBt.setType("application/vnd.android.package-archive");
sendBt.setType("*/*");
sendBt.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file://" + appInfo.publicSourceDir));

Log.v("PACKAGEDIR: ", appInfo.publicSourceDir);
paramActivity.startActivity(Intent.createChooser(sendBt, "Share image using"));
// paramActivity.startActivity(sendBt);
}
catch (NameNotFoundException e1) {
e1.printStackTrace();
}

}

نظرات

ahm_android 10 سال پیش
این کد جواب نمیده توی گوشی واقعی من توی اینجا مشکلمو بیان کردم لینک
cyberchief 10 سال پیش
تو قسمت paramActivity چی باید بنویسیم؟
cyberchief 10 سال پیش
برا paramActivity همون کلاس رو دادم حل شد
طاهر 11 سال پیش

ارسال ایمیل از داخل برنامه به یک ایمیل مشخص و با استفاده از نرم افزارهای ارسال ایمیل گوشی

 /*
* Send Email for feadback
*/
public static void sendEmailFeadback(Activity paramActivity, String paramStringToastMsg, String paramStringPackage) {
Toast.makeText(paramActivity, paramStringToastMsg, Toast.LENGTH_LONG).show();
Intent localIntent1 = new Intent("android.intent.action.SEND");
localIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
String str = "";
try
{
str = paramActivity.getPackageManager().getPackageInfo(paramActivity.getPackageName(), 0).versionName;
localIntent1.setType("plain/text");
String[] arrayOfString = new String[1];
arrayOfString[0] = "info@negahetazehco.com";
localIntent1.putExtra("android.intent.extra.EMAIL", arrayOfString);
localIntent1.putExtra("android.intent.extra.SUBJECT", paramStringPackage + str + " Feedback");
localIntent1.putExtra("android.intent.extra.TEXT", "\n\n\n<from " + paramStringPackage + " " + str + ">");
paramActivity.startActivity(Intent.createChooser(localIntent1, "Send mail..."));
}
catch (PackageManager.NameNotFoundException localNameNotFoundException)
{
localNameNotFoundException.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}

نظرات

یگانه 11 سال پیش
سلام این متد(ارسال ایمیل از داخل برنامه) 3 تا ورودی میخاد لطفا بفرمایید باید چه اصلاعاتی پر کنم
طاهر 11 سال پیش
از اسم ورودی ها مشخصه که هر کدام به چه کار میاد
b.fat 11 سال پیش
آیا این کد نیاز به permission حاصی دارد؟
b.fat 11 سال پیش
خودم متوجه شدم. permission خاصی لازم نداره. فقط اگر روی گوشی تست می کنید، وای فای گوشی را روشن کنید تا کار کنه.
shabnamhssn 11 سال پیش
سلام و خسته نباشید. اگه بخوایم که کاربر متوجه ارسال ایمیل نشه یعنی نمایش برنامه ها انجام نشه چی؟ خواهش میکنم به این مورد پاسخ بدید
shabnamhssn 11 سال پیش
سلام و خسته نباشید. اگه بخوایم که کاربر متوجه ارسال ایمیل نشه یعنی نمایش برنامه ها انجام نشه چی؟ خواهش میکنم به این مورد پاسخ بدید
طاهر 11 سال پیش

ارسال نظر ، دیدن جزئیات برنامه ، نصب برنامه در بازار

  /*
* Open app detail page in cafebazaar directly
*/
public static void openCafeBazaarFeadBack(Context paramContext, final String paramStringPackage, final String paramStringAction)
{
Intent inten;
if (paramStringAction.equals("rating"))
inten = new Intent(Intent.ACTION_EDIT); // submit rate for app
else if (paramStringAction.equals("detail"))
inten = new Intent(Intent.ACTION_VIEW); // view detail of app
else if (paramStringAction.equals("setup"))
inten = new Intent(Intent.ACTION_INSERT); // setup app directly
else
inten = new Intent(Intent.ACTION_VIEW); // view detail of app

inten.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {

inten.setData(Uri.parse("bazaar://details?id=" + paramStringPackage));
paramContext.startActivity(inten);
}
catch (android.content.ActivityNotFoundException anfe) {
inten.setData(Uri.parse("http://cafebazaar.ir/app/?id=" + paramStringPackage));
paramContext.startActivity(inten);
}
catch (Exception e) {
e.printStackTrace();
}

}

نظرات

mohsen-jj 11 سال پیش
مرسی :) همشون به درد بخور هستن باز هم بذارین
siam_1365 11 سال پیش
فکر میکنم دوستان باید از شما یک تشکر ویژه بکنن، این جور توابع رو برنامه نویسا برای راحتی کار خودشون بعد مدتها کارکردن و برنامه نوشتن تهیه می کنن و اینکه کسی چنین توابعی رو به اشتراک بذاره واقعا لطف بزرگی در حق باقی دوستان کرده، در واقع تجارب خودتون رو به اشتراک گذاشتید
hamcalas 11 سال پیش
عالی بود ،ولی چرا فقط اکشن detail عمل می کنه؟
طاهر 11 سال پیش

تابع خروج از برنامه :

 /*
* Exit Of App
*/
public static void AppExit()
{
G.CurrentActivity.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.CurrentActivity.startActivity(intent);
System.exit(0);
}

نظرات

ahmad_r 11 سال پیش
نقش اینتنت رو متوجه نشدم. میشه یکم توضیح بدید
nooriDeveloper 11 سال پیش
با همون system.exit(0 خالی هم که میشه از برنامه خارج شد !
Criss 11 سال پیش
این دستور برنامه رو از لیست RecentApp اندروید هم پاک میکنه ؟ کسی اگر میدونه لطفا این دستور رو بزاره
mosafer 10 سال پیش
منم همچین مشکلی رو دارم ینی میخوام که با خروج از برنامه از لیست RecentApp هم پاک بشه..
ممنون به G.context به اول finish اضافه میکنم ارور میده. چیکار کنم؟
MEHDI007 11 سال پیش

حالت عمودی و افقی برنامه.

برای اینکه Activity به حالت عمودی (portrait) برود، باید کدهای زیر را در میان کدهای Activity بنویسیم :

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

برای اینکه Activity به حالت افقی (landscape) برود، باید کدهای زیر را در میان کدهای Activity بنویسیم :

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

نظرات

AhmadVB 11 سال پیش
اگر این کد را درون ActivityEnhanced قرار دهیم کل پروژه به خوبی بر روی یک حالت ثابت می شود.
goorgool 11 سال پیش
آقا دستت درد نکنه
MEHDI007 11 سال پیش

با استفاده از کلاس SimpleDateFormat

فرض کنید که بخواهیم تاریخ و زمان فعلی را به صورت شکل کلی زیر در یک رشته (String) داشته باشیم (البته سال میلادی) :

 

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String currentDateandTime = sdf.format(new Date());

بنابراین تاریخ و زمان فعلی در یک متغیر از جنس رشته (String) و با نام currentDateandTime ذخیره می شود.

 yyyy   -->   سال (year)
MM --> ماه (month)
dd --> روز (day)
HH --> ساعت (hour)
mm --> دقیقه (minute)
ss --> ثانیه (second)

 

نظرات

طاهر 11 سال پیش
برادر قراره در این تایپیک توابع یا کلاس گذاشته بشه نه تکه کدهای ساده . لطف کن این کدها رو در یک تایپیک جداگانه قرار بده که نظم تایپیک بهم نخوره
siam_1365 11 سال پیش
بله منم با آقای "طاهر" موافقم، بصورت تابع بنویسید و ورودی و خروجی های لازم رو طوری قرار بدید که بشه در هرجا براحتی استفادش کرد، فکر می کنم بهتره برای بیشتر این توابع یه ورودی Activity یا Context هم تعریف کنید تا در کلاس های دیگه هم قابل اجرا باشن
طاهر 11 سال پیش

کلاس اسکرول افقی که حالت پیش فرض اون سمت راست باشه.

 
public class RightAlignedHorizontalScrollView extends HorizontalScrollView {

public RightAlignedHorizontalScrollView(Context context) {
super(context);
}


public RightAlignedHorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}


public RightAlignedHorizontalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}


@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
scrollTo(getChildAt(0).getMeasuredWidth(), 0);
}
}

نظرات

صالحی 9 سال پیش
من الان داخل یک اکتویتی و ایک ام ال یه اسکرول دارم که میخوام یک لایه داخل این اسکرول بزارم و چند تا دکمه یا هر چیزی داخلش این لایه که بشه به صورت اقفی اسکرول کرد .. خب باید بیام مثل کد بالا یه کلاس ایجاد کنم . حالا چطور این کلاس رو در اکتیوتی مورد نظر فرا بخونم و به اسکرول ربطش بدم و در ایکس ام ال اسکرول چه پارامتر هایی باید ذکر شه ؟؟؟ ممنون میشم جواب بدید
طاهر 11 سال پیش

ارسال بازخورد به فیس بوک

 /*
* Open facebook app or site for show app page
*/
public static Intent openFaceBookFeadBack(Context paramContext, String paramStringFaceBookProfile, String paramStringFaceBookPage)
{
Intent localIntent = null;
try
{
paramContext.getPackageManager().getPackageInfo("com.facebook.katana", 0);
localIntent = new Intent("android.intent.action.VIEW", Uri.parse("fb://profile/" + paramStringFaceBookProfile));
return localIntent;
}
catch (Exception localException)
{
while (true)
localIntent = new Intent("android.intent.action.VIEW", Uri.parse("https://www.facebook.com/" + paramStringFaceBookPage));
}
}

نظرات

طاهر 11 سال پیش

خروج از برنامه با دوبار زدن دکمه بازگشت

  @Override
public void onBackPressed()
{
if (back_pressed + 2000 > System.currentTimeMillis()) {
super.onBackPressed();
AppExit();
}
else
Toast.makeText(context, "نمایش پیغام لمس دوباره کلید بازگشت جهت خروج", Toast.LENGTH_LONG).show();

back_pressed = System.currentTimeMillis();

}

/*
* Exit Of Application
*/
public static void AppExit()
{
G.CurrentActivity.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.CurrentActivity.startActivity(intent);
System.exit(0);
}

نظرات

Gandalf 11 سال پیش
کار نمیکنه که :(
Gandalf 11 سال پیش
The method startActivity(Intent) is undefined for the type String
Gandalf 11 سال پیش
The method finish() is undefined for the type String
طاهر 11 سال پیش
برای G.CurrentActivity نام اکتیویتی جاری رو قرار بدید
sh.khaksar 11 سال پیش
با تشکر، فقط برای درست کار کردن متغیر back_pressed رو خارج از متد OnBackPressd به صورت فیلد تعریف کنید.
GR 10 سال پیش
اقا جریان این back_pressed‌چیه باید چیکارش کرد؟
طاهر 11 سال پیش

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

 /*
* Open instagram app or site for show app page
*/
public static Intent openInstagramFeadBack(Context paramContext, String paramStringInstagramProfile, String paramStringInstagramPage)
{
Intent localIntent = paramContext.getPackageManager().getLaunchIntentForPackage("com.instagram.android");
try
{
paramContext.getPackageManager().getPackageInfo("com.instagram.android", 0);
localIntent.setComponent(new ComponentName("com.instagram.android", "com.instagram.android.activity.UrlHandlerActivity"));
localIntent.setData(Uri.parse("http://instagram.com/p/" + paramStringInstagramProfile + "/"));
return localIntent;
}
catch (Exception localException)
{
while (true)
localIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.instagram.com/" + paramStringInstagramPage));
}
}

نظرات

Criss 11 سال پیش
اقا طاهر خسته نباشید < این کد دقیقا چه میکنه ؟ پیج خاصی رو در اینستاگرام باز میکنه ؟
AhmadVB 11 سال پیش

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

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

 
private class SolarCalendar {

public String strWeekDay = "";
public String strMonth = "";

int date;
int month;
int year;


public SolarCalendar()
{
Date MiladiDate = new Date();
calcSolarCalendar(MiladiDate);
}


public SolarCalendar(Date MiladiDate)
{
calcSolarCalendar(MiladiDate);
}


private void calcSolarCalendar(Date MiladiDate) {

int ld;

int miladiYear = MiladiDate.getYear() + 1900;
int miladiMonth = MiladiDate.getMonth() + 1;
int miladiDate = MiladiDate.getDate();
int WeekDay = MiladiDate.getDay();

int[] buf1 = new int[12];
int[] buf2 = new int[12];

buf1[0] = 0;
buf1[1] = 31;
buf1[2] = 59;
buf1[3] = 90;
buf1[4] = 120;
buf1[5] = 151;
buf1[6] = 181;
buf1[7] = 212;
buf1[8] = 243;
buf1[9] = 273;
buf1[10] = 304;
buf1[11] = 334;

buf2[0] = 0;
buf2[1] = 31;
buf2[2] = 60;
buf2[3] = 91;
buf2[4] = 121;
buf2[5] = 152;
buf2[6] = 182;
buf2[7] = 213;
buf2[8] = 244;
buf2[9] = 274;
buf2[10] = 305;
buf2[11] = 335;

if ((miladiYear % 4) != 0) {
date = buf1[miladiMonth - 1] + miladiDate;

if (date > 79) {
date = date - 79;
if (date <= 186) {
switch (date % 31) {
case 0:
month = date / 31;
date = 31;
break;
default:
month = (date / 31) + 1;
date = (date % 31);
break;
}
year = miladiYear - 621;
} else {
date = date - 186;

switch (date % 30) {
case 0:
month = (date / 30) + 6;
date = 30;
break;
default:
month = (date / 30) + 7;
date = (date % 30);
break;
}
year = miladiYear - 621;
}
} else {
if ((miladiYear > 1996) && (miladiYear % 4) == 1) {
ld = 11;
} else {
ld = 10;
}
date = date + ld;

switch (date % 30) {
case 0:
month = (date / 30) + 9;
date = 30;
break;
default:
month = (date / 30) + 10;
date = (date % 30);
break;
}
year = miladiYear - 622;
}
} else {
date = buf2[miladiMonth - 1] + miladiDate;

if (miladiYear >= 1996) {
ld = 79;
} else {
ld = 80;
}
if (date > ld) {
date = date - ld;

if (date <= 186) {
switch (date % 31) {
case 0:
month = (date / 31);
date = 31;
break;
default:
month = (date / 31) + 1;
date = (date % 31);
break;
}
year = miladiYear - 621;
} else {
date = date - 186;

switch (date % 30) {
case 0:
month = (date / 30) + 6;
date = 30;
break;
default:
month = (date / 30) + 7;
date = (date % 30);
break;
}
year = miladiYear - 621;
}
}

else {
date = date + 10;

switch (date % 30) {
case 0:
month = (date / 30) + 9;
date = 30;
break;
default:
month = (date / 30) + 10;
date = (date % 30);
break;
}
year = miladiYear - 622;
}

}

switch (month) {
case 1:
strMonth = "فروردین";
break;
case 2:
strMonth = "اردیبهشت";
break;
case 3:
strMonth = "خرداد";
break;
case 4:
strMonth = "تیر";
break;
case 5:
strMonth = "مرداد";
break;
case 6:
strMonth = "شهریور";
break;
case 7:
strMonth = "مهر";
break;
case 8:
strMonth = "آبان";
break;
case 9:
strMonth = "آذر";
break;
case 10:
strMonth = "دی";
break;
case 11:
strMonth = "بهمن";
break;
case 12:
strMonth = "اسفند";
break;
}

switch (WeekDay) {

case 0:
strWeekDay = "یکشنبه";
break;
case 1:
strWeekDay = "دوشنبه";
break;
case 2:
strWeekDay = "سه شنبه";
break;
case 3:
strWeekDay = "چهارشنبه";
break;
case 4:
strWeekDay = "پنج شنبه";
break;
case 5:
strWeekDay = "جمعه";
break;
case 6:
strWeekDay = "شنبه";
break;
}

}

}


public static String getCurrentShamsidate() {
Locale loc = new Locale("en_US");
Utilities util = new Utilities();
SolarCalendar sc = util.new SolarCalendar();
return String.valueOf(sc.year) + "/" + String.format(loc, "%02d",
sc.month) + "/" + String.format(loc, "%02d", sc.date);
}

نظرات

override 11 سال پیش
خیلی خوب بود ، اینکه منبع را ذکر کردید ارزش کارتون رو بیشتر کرد.
atf 11 سال پیش
احمد جان این کد هارو من کپی کردم تو اکتیوتی اصلیم حالا برای طراحی حالت UI چه کنم
AhmadVB 11 سال پیش

حذف یک پوشه به همراه کلیه محتویاتش شامل فایل ها و پوشه ها:

     boolean deleteRecursive(File fileOrDirectory) {

if (fileOrDirectory.isDirectory())
for (File child: fileOrDirectory.listFiles())
deleteRecursive(child);

return fileOrDirectory.delete();

}

این طور صدا زده می شود :

String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
String path = sdCard+"/FolderName";
File f = new File(path);
if(deleteRecursive(f))
Log.i("LOG", path + " Deleted Seccessfully.");

نیاز به دسترسی زیر در Manifest دارد:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

نظرات

DV 10 سال پیش
حاجی دمت گرم

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