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

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

طاهر  11 سال پیش  9 سال پیش
+173 0

با سلام

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

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

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

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

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

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

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

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

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

لیست توابع :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+2 0
کاره بسیار جالب و مفیدیه انشالله موفق باشید در ضمن توضیحی مختصر هم برای هر تابع یا کلاس داده بشه خیلی عالی میشه سپاس (11 سال پیش)
+1 0
این خیلی خوبه طاهر جان ولی بهتر اینه که شما هم مثل دوستان دیگه در این تاپیک لینک یک پست باز کنید و مطالبتون رو به صلاحدید خودتون به رایگان یا برای معاوضه یا فروش بزارید که بانک سورسمون زودتر آماده بشه و در یک جا متمرکز باشه . باز هم هر طور میل شماست . (11 سال پیش)
+2 0
دوستان انشاالله در جریان این تاپیک هستید ! لینک (11 سال پیش)
+2 0
تا قسمت ویکی سایت راه بیفته این تایپیک میتونه مفید باشه برای خیلی ها (11 سال پیش)
+1 0
با سلام و خیلی ممنون که اطلاعات و تجربیات خود را به اشتراک می گذارید با تشکر (11 سال پیش)
0 0
آقا دستت درد نکنه (11 سال پیش)
0 0
ایول من پشتتونم (11 سال پیش)
+1 0
یکی از بهترین تاپیک های این مجموعه (11 سال پیش)
+2 0
به نظر من اگه یه توضیح کوچیک هم در زیر توابع داده بشه بد نیست (10 سال پیش)
0 0
دوست عزیز @طاهر، یه پیشنهاد دارم، با توجه به اینکه تعداد کدها داره زیاد میشه برای جستجوی سریعتر کدها و همچنین جلوگیری از درج کدهای تکراری لطفا تو همین اول پست لیست تمام کدهایی که تا الان گذاشته شده (منظورم نام شون هست) رو بزارید و کدهای جدید رو به انتهای لیست اضافه کنید. (9 سال پیش)
 برای این سوال 58 پاسخ وجود دارد.
پاسخ به سوال 
h_r_v  11 سال پیش
+22 0

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

به جای واژه yekteam نام کاربری خودتون رو توی اینستا بزارید!

 TextView txtFollow = (TextView) findViewById(R.id.txtFollow);
txtFollow.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Uri uri = Uri.parse("http://instagram.com/_u/yekteam");
Intent likeIng = new Intent(Intent.ACTION_VIEW, uri);

likeIng.setPackage("com.instagram.android");

try {
startActivity(likeIng);
} catch (ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://instagram.com/yekteam")));
}

}
});
+2 0
سلام نیما جان اکه نرم افزار اینستاگرام روی گوشی نصب نباشه کرش میکنه آیا ؟؟؟؟ (11 سال پیش)
+3 0
سلام مطابق کد اگر نرم افزار نصب نباشد، صفحه در بروزر باز خواهد شد. (11 سال پیش)
پاسخ به سوال 
Alireza.b  11 سال پیش
+8 0

ارسال ایمیل به همراه attach فایل:

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[]{"email"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Test");
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<Uri>();
//convert from paths to Android friendly Parcelable Uri's
File source = new File("آدرس یک فولدر"); for (String file : source.listfiles())
{ File fileIn = new File(file); Uri u = Uri.fromFile(fileIn); uris.add(u); } emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); context.startActivity(emailIntent);

اگر خواستید یک فایل رو attach کنید، کافیه بجای استفاده از foreach خودتون دستی این کار رو انجام بدین

پاسخ به سوال 
Criss  11 سال پیش
+15 0

من این کد جالب رو دیدم گفتم اینجا بزارم

با زدن کلید اینتر در EditText کاری انجام میشه

  urlText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
openBrowser();
return true;
}
return false;
}
});

}

/** Open a browser on the URL specified in the text box */
private void openBrowser() {
webView.loadUrl(urlText.getText().toString());
webView.requestFocus();
}

 

پاسخ به سوال 
Ghost  11 سال پیش
+9 0

سلام دوستان .

با این کد میتونید قسمت تنظیمات گوشیتون رو باز کنید :

 Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.Settings");
startActivity(intent);

همین

0 0
سلام. اگر بخواهیم قسمت ویجت گوشی باز بشه چی؟ (11 سال پیش)
+1 0
سلام دوست عزیز . ببخشید دیر نظرت رو دیدم . الان باید برم بیرون . شب سورسش رو میگذارم ... (11 سال پیش)
پاسخ به سوال 
Ghost  11 سال پیش
+15 0

سلام دوستان .

با این کد میتونید یک کد USSD رو در برنامه اجرا کنید :

 String code = Uri.encode("#");
String ussd_one = "*" + "733" + code;
startActivityForResult(new Intent
("android.intent.action.CALL", Uri.parse("tel:" + ussd_one)), 1);, 1);

...

+1 0
راه افتادیـــــــــــــــــــــــــــــــا!!!! (11 سال پیش)
پاسخ به سوال 
Ghost  11 سال پیش
+19 0

سلام دوستان عزیز.

با این کد میتونید یک عکس رو به عنوان پس زمینه گوشی انتخاب کنید :

این کد رو در قسمت onCreat قرار بدید :

 WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);

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

  try {
wallpaperManager.setBitmap(img_Name.getDrawingCache());
}
catch (Exception e) {
e.printStackTrace();
}

 img_Name اسم همون عکسی هست که قراره با پس زمینه گوشی ست بشه ...

اینم پرمیشن داخل منیفست :

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

همین

+1 0
باید DrawingCache عکس موردنظر true باشه تا عکس بعنوان والپیپر ست بشه به اینصورت (img.setDrawingCacheEnabled(true (11 سال پیش)
0 0
سلام دوست عزیز . درست نمیدونم . ولی من از کد بالا استفاده میکنم جواب میده ؟! (11 سال پیش)
پاسخ به سوال 
Ghost  11 سال پیش
+13 0

سلام دوستان .

سورس اضافه کردن شورتکات روی دستکاپ گوشی :

این متد رو بگذارید توی کلاستون :

 private void ShortcutIcon() {

Intent shortcutIntent = new Intent(getApplicationContext(), ShortkatActivity.class);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Test");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),
R.drawable.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
}

هر موقع خواستید شورتکات اضافه بشه به دسکتاپ این متد رو صدا بزنید .

این پرمیشن رو هم به منیفست اضافه کنید :

 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

همین

پاسخ به سوال 
nooriDeveloper  11 سال پیش
+15 0

جلوگیری از خاموش شدن صفحه :

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

برای غیر فعال کردن حالت بالا (ممکن است در یک دستور شرطی بخواهیم فقط در شرایطی خاص صفحه خاموش نشود)

 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

0 0
perfect (10 سال پیش)
0 0
سلام کد شما رو کپی کردم تو برنامه از clearFlags و addFlags خطا می گیره اینم پیغامشه The method clearFlags(int) is undefined for the type Object ممنون می شم راهنمایی کنید (10 سال پیش)
+1 0
من از این کد تو برنامه خودم استفاده کردم، نباید مشکلی داشته باشه. لطفاً کدی که نوشتید رو بزارید تا بیشتر بشه راهنمایی کرد. البته دقت کنید کد بالا رو باید در متد onCreate و بعد از setContentView (بعد از جایی که لایه رو به اکتیویتی اختصاص دادید) بنویسید. (10 سال پیش)
پاسخ به سوال 
hamcalas  11 سال پیش
+7 0

چک کردن اینکه آیا سرویس درحال اجراست ؟

     //............check is service runing
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service: manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
//...................................

و برای صدا زدن  : 

 isMyServiceRunning(MyService.class)

منبع

 

پاسخ به سوال 
hamcalas  11 سال پیش
+13 0

گرفتن یک عکس از view دلخواه :

 public void screenshot(View view){
        view.getRootView();
String
state =Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)){File picDir =newFile(Environment.getExternalStorageDirectory()+"/myPic");if(!picDir.exists()){ picDir.mkdir();} view.setDrawingCacheEnabled(true); view.buildDrawingCache(true);
Bitmap
bitmap = view.getDrawingCache();//
Date date = new Date();
String fileName ="mylove"+".jpg";File picFile =newFile(picDir +"/"+ fileName);
try
{ picFile.createNewFile();
FileOutputStream
picOut =newFileOutputStream(picFile); bitmap =Bitmap.createBitmap(bitmap,0,0, bitmap.getWidth(),(int)(bitmap.getHeight()/1.2));
boolean
saved = bitmap.compress(CompressFormat.JPEG,100, picOut);
if(saved){
Toast.makeText(getApplicationContext(),"Image saved to your device Pictures "+"directory!",Toast.LENGTH_SHORT).show();
}
else{//Error} picOut.close();}catch(Exception e){ e.printStackTrace();
}
view.destroyDrawingCache();
}
else{//Error}}

در مانفیست اضافه کنید:

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

 منبع

پاسخ به سوال 
mspm  11 سال پیش
+8 0

اموزش دریافت ip

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

  publicString getWifiApIpAddress(){WifiManager wifiManager =(WifiManager) getSystemService(WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
returnString.format("%d.%d.%d.%d",(ipAddress &0xff),(ipAddress >>8&0xff),(ipAddress >>16&0xff),(ipAddress >>24&0xff));}
پاسخ به سوال 
matrix  11 سال پیش
+16 0

با سلام ؛ ساخت یک toast سفارشی با xml دلخواه.مثلا ایکن و متن و قیافه ای که خودتون دوس دارین:

 public static void toastShow(String message){

LayoutInflater inflater = G.CurrentActivity.getLayoutInflater();

View view = inflater.inflate(R.layout.layout_toast,

(ViewGroup) G.CurrentActivity.findViewById(R.id.linearTost));



TextView txtTileToast = (TextView) view.findViewById(R.id.txtTtitleaost);

txtTileToast.setText(message);

Toast toast = new Toast(G.CurrentActivity);

toast.setView(view);

toast.setGravity(Gravity.BOTTOM |

Gravity.CENTER_VERTICAL, 0, 0);

toast.setDuration(Toast.LENGTH_SHORT);

toast.show();}


و اینم فایل xml که میتونید به دلخواه تغییرش بدین:

 <LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content" android:gravity="center" android:padding="8dip">

+1 0
سلام دوست عزیز، مرسی از این کد، لطفا برای خواناتر شدنش ابتدا دکمه رو بزنید و بعد کدتون رو قرار بدید (11 سال پیش)
0 0
اون linear اخر یک لایه xml است. (10 سال پیش)
پاسخ به سوال 
Criss  10 سال پیش
+3 0

Hex Color To RGB

  int color = (int) Long.parseLong("ff0000", 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;

RGB Color To Hex

  String hexColor = String.format("#%02x%02x%02x", red, green, blue);
پاسخ به سوال 
cyberchief  10 سال پیش
+2 0

ارسال ایمیل توسط کاربر

 Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT   , "body of email");
try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
پاسخ به سوال 
Javid  10 سال پیش
+3 0

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

int persian_zero_unicode= 1632;
static char[] PersianChars = {'٠','١','٢','۳','۴','۵','۶','٧','٨','٩'};

public static String En2Per (String str) {

	StringBuilder builder = new StringBuilder();
	for(int i =0;i<str.length();i++) {
		if(Character.isDigit(str.charAt(i))) {
			builder.append(PersianChars[(int)(str.charAt(i))-48]);
		} else {
		builder.append(str.charAt(i));
		}
	}

	return builder.toString();

}
پاسخ به سوال 
Criss  10 سال پیش
+10 0

خط انداختن بین  هر چهار شماره کارت بانکی در حین تایپ :

 private void onEditTextInput() {
edtCard.setOnKeyListener(new OnKeyListener() {

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode != KeyEvent.KEYCODE_DEL) {
int start = Math.max(edtCard.getSelectionStart(), 0);
int end = Math.max(edtCard.getSelectionEnd(), 0);
switch (edtCard.length()) {
case 4:
edtCard.getText().replace(Math.min(start, end), Math.max(start, end), "-", 0, 1);
break;
case 9:
edtCard.getText().replace(Math.min(start, end), Math.max(start, end), "-", 0, 1);
break;
case 14:
edtCard.getText().replace(Math.min(start, end), Math.max(start, end), "-", 0, 1);
break;
}
return true;
}
return false;
}
});
}

اگر کاربر شماره کارت 16 رقمی رو کپی / پیست کنه :

  String str = edtCard.getText().toString();
str = new StringBuilder(str).insert(str.length() - 4, "-").toString();
str = new StringBuilder(str).insert(str.length() - 9, "-").toString();
str = new StringBuilder(str).insert(str.length() - 14, "-").toString();
edtCard.setText(str);

 

پاسخ به سوال 
Criss  9 سال پیش
+2 0

اسکن کردن Sdcard و پیدا کردن فایل های مورد نظر

private String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
public ArrayList<String> paths = new ArrayList<String>();


. . . onCreate() {

listOfMedia(new File(sdCard));

}

private void listOfMedia(File pFile) {
File[] list = pFile.listFiles();

for (File file : list) {
if (file.isDirectory()) {
Log.d("LOG", file + " IS DIR");
listOfMedia(file);
} else {
String path = file.getAbsolutePath();
if (path.contains(".mp4") || path.contains(".jpg")|| path.contains(".jpeg") || path.contains(".png")) {
paths.add(path);
Log.e("LOG", file + " ADD");
}
Log.i("LOG", file + " IS FILE");
}
}

Log.w("LOG", paths.size() + " DONE");
}
 
 برای اینکه فولدر های .nomeda رو نمایش ندید
 
 

private void listOfMedia(File pFile) {
File[] list = pFile.listFiles();

for (File file : list) {
if (file.isDirectory()) {
if (!new File(file, ".nomedia").exists() && !file.getName().substring(0,1).contains(".")) {
Log.d("LOG", file + " IS DIR");
listOfMedia(file);
}
} else {
String path = file.getAbsolutePath();
if (path.contains(".mp4") || path.contains(".jpg") || path.contains(".jpeg") || path.contains(".png")) {
paths.add(path);
Log.e("LOG", file + " ADD");
}
Log.i("LOG", file + " IS FILE");
}
}

Log.w("LOG", paths.size() + " DONE");
}
 

 کد رو میزاری رنگش میپره ، رنگش رو درست میکنی فرمتش میپره !

پاسخ به سوال 
hhgh4269  9 سال پیش
0 0

برای بررسی اتصال به اینرنت و اطلاعات اضافی می تونید از کلاس های NetworkInfo و ConnectivityManager استفاده کنید که اطلاعات جالبی رو در اختیارتون قرار می دن.

مثال :

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

برای استفاده از کد بالا حتماً مجوز زیر رو به برنامه اضافه کنید :


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

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