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

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

مدیریت گفتگو
jafar 12 سال پیش
آخرین تغییر: 10 سال پیش

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

هر کی میدونه  راهشو بگه ما هم بدونیم

 

نظرات

پاسخ‌ها 6

مجتبی یگانه 12 سال پیش

برنامه رو در assets قرار بده ، کپی کن تو کارت حافظه ارسال کن :) 

نظرات

طاهر 12 سال پیش
اینکار باعث افزایش حجم برنامه میشه
طاهر 12 سال پیش

روش خیلی راحت اینه که فایل برنامه رو از قسمت پوشه data برای دیگران ارسال کنی :دی

نظرات

Spirit 12 سال پیش

// ارسال برنامه از طرق مختلف
public static void shareApp (Context context , String title) {
try {
PackageManager pm = context.getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(context.getPackageName(), 0);
File srcFile = new File(ai.publicSourceDir);
Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.setType("application/*");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(srcFile));
context.startActivity(Intent.createChooser(share, title));
} catch (Exception e) {
}
}

 

نظرات

Spirit 12 سال پیش
برای بار سوم اصلاح شد
مجتبی یگانه 12 سال پیش
بالا برای اون دسته از دوستانی که ندیدن ! ، اشتراک گذاری فایل APK برنامه با بلوتوث و..
وحید 11 سال پیش
دوست عزیز این activity باید چی تعریفش کنیم؟ نمیشناستش؟
Spirit 11 سال پیش
@Rooh در کل اونجا یه Context باید باشه، اگه کد رو توی یک activity نوشتید لازم نیست پاکش کنید یا بجاش از this استفاده کنید - اگه جایی نوشتید که دسترسی به Context وجود نداره هم باید یه Context به متد یا کلاسش بفرستید.
وحید 11 سال پیش
ممنون. اما میشه یه توضیحی درمورد قسمت های مختلفش بدی تا با چگونگی کارکردش هم آشنا بشیم؟
وحید 11 سال پیش
spirit من می خوام با کلیک روی باتتان مورد نظر گزینه های شیر بیاد. حالا متن بالا رو در قسمت set on click می ذارم ولی cash میکنه
Spirit 11 سال پیش
5 ساعت پیش کد رو کمی تغییر دادم، الان یه متد static هست که باید بزاری توی یه کلاس و بعد صداش بزنی، دو تا ورودی داره یکی Context که تو activity میشه از this استفاده کرد یا G.context و دومی هم یه رشته هست برای عنوان دیالوگ.
وحید 11 سال پیش
منم همین کارو کردم. برای context ها G. زدم و برای title یک String title; تعریف کردم و بقیه خط ها رو در set on click ریختم.
MeY3am 11 سال پیش

Rooh @ به این صورت در setOnClickListener باتن  کد رو استفاده کنید:

 btnShare.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                shareApp (G.context , "Share App") // or shareApp (ActivityName.this , "Share App")
} });

// ارسال برنامه از طرق مختلف public static void shareApp (Context context , String title) { try { PackageManager pm = context.getPackageManager(); ApplicationInfo ai = pm.getApplicationInfo(context.getPackageName(), 0); File srcFile = new File(ai.publicSourceDir); Intent share = new Intent(); share.setAction(Intent.ACTION_SEND); share.setType("application/*"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(srcFile)); context.startActivity(Intent.createChooser(share, title)); } catch (Exception e) { } }

نظرات

نورحسینی 11 سال پیش
با تشکر من یک باتن گزاشتم به نام btnshare و کد بالا رو در اکتیویتی مربوطه گزاشتم . اجرا شده ولی با کلیک روی باتن هیچ اتفاقی نمی افته ! کار دیگری هم نیازه ؟ فایل apk رو جایی بایید بزاریم ؟ پرمیژنی نیاز نیست ؟ ممنون
وحید 11 سال پیش

 

 view.findViewById(R.id.layShare).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
String title = "hi";
try {
PackageManager pm = G.context.getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(G.context.getPackageName(), 0);
File srcFile = new File(ai.publicSourceDir);
Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.setType("application/*");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(srcFile));
G.context.startActivity(Intent.createChooser(share, title));
}
catch (Exception e) {
Toast.makeText(G.context, "کش کرد", Toast.LENGTH_LONG).show();
}

}
});

نظرات

MeY3am 11 سال پیش
در پاسخ بالا براتون توضیح دادم!
وحید 11 سال پیش
دقیقا متن شما رو زدم ولی cach می کنه. شاید نکته ای رو رعایت نکردم. آدرس فایلی چیزی نمی خواد؟
وحید 11 سال پیش
دوستان من هنوز مشکلم رفع نشده و کش می کنه.
وحید 11 سال پیش
دوستان لطفا بگید این catch چه چیزی رو می رسونه؟ یعنی در صورت catch می کنه؟
MeY3am 11 سال پیش
اگه منظورتون کرش هستش که؛ کلاس G رو داخل مانیفست تعریف کردین؟
وحید 11 سال پیش
نه منظورم کرش نیست، منظورم Catch هست try catch . یعنی انجام نمی ده عملیات رو و می خواد کرش کنه که می ره قسمت catch رو اجرا میکنه.
وحید 11 سال پیش
نیاز به پریمیشن نداره؟
mahdiFar77 11 سال پیش
سلام منم نتونستم نتیجه بگیرم نمیشه بیشتر توضیح بدید؟
Saeed Mozaffari 11 سال پیش

این کد برای من جواب داد (فکر کنم از یکی از تاپیکهای همین جا کپی کرده بودم)

                PackageManager pm = getPackageManager();
String uri = null;
for (ApplicationInfo app: pm.getInstalledApplications(0)) {
if ( !((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1)) {
if ( !((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
uri = app.sourceDir;
if (uri.contains(getPackageName())) {
break;
}
}
}
}
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("application/vnd.android.package-archive");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(uri)));
startActivity(Intent.createChooser(intent, "اشتراک گذاری نرم افزار"));

نظرات

GR 10 سال پیش
فقط نمیدونم چرا اسم فایل ارسالی رو base مینویسه در هر صورت. کسی میدونه؟

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