بروز خطا
   [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

h_r_v 11 سال پیش

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

به جای واژه 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")));
}

}
});

نظرات

atf 11 سال پیش
سلام نیما جان اکه نرم افزار اینستاگرام روی گوشی نصب نباشه کرش میکنه آیا ؟؟؟؟
Alireza.b 11 سال پیش
سلام مطابق کد اگر نرم افزار نصب نباشد، صفحه در بروزر باز خواهد شد.
Alireza.b 11 سال پیش

ارسال ایمیل به همراه 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 سال پیش

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

با زدن کلید اینتر در 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 سال پیش

سلام دوستان .

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

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

همین

نظرات

f-Dehghan 11 سال پیش
سلام. اگر بخواهیم قسمت ویجت گوشی باز بشه چی؟
Ghost 11 سال پیش
سلام دوست عزیز . ببخشید دیر نظرت رو دیدم . الان باید برم بیرون . شب سورسش رو میگذارم ...
Ghost 11 سال پیش

سلام دوستان .

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

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

...

نظرات

b.fat 11 سال پیش
راه افتادیـــــــــــــــــــــــــــــــا!!!!
Ghost 11 سال پیش

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

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

این کد رو در قسمت 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" />

همین

نظرات

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

سلام دوستان .

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

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

 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 سال پیش

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

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

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

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

 

نظرات

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

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

     //............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 سال پیش

گرفتن یک عکس از 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 سال پیش

اموزش دریافت 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 سال پیش

با سلام ؛ ساخت یک 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">

نظرات

SaeiD-as 11 سال پیش
سلام دوست عزیز، مرسی از این کد، لطفا برای خواناتر شدنش ابتدا دکمه رو بزنید و بعد کدتون رو قرار بدید
matrix 10 سال پیش
اون linear اخر یک لایه xml است.
Criss 10 سال پیش

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 سال پیش

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

 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 سال پیش

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

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 سال پیش

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

 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 سال پیش

اسکن کردن 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 سال پیش

برای بررسی اتصال به اینرنت و اطلاعات اضافی می تونید از کلاس های 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" />

نظرات


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