رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.

AnswerCenter

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

  • مرجع پاسخگویی
  • تولید آموزش
  • سفارش پروژه

درخواست سفارش پروژه

  • 0
MrMedia

اشتراک برنامه

سوال

MrMedia    89

کاربر رو به رشد

سلام من میخواستم برنامه خوذم رو از داخل خود اپ به اشتراک بزارم
قبلا این کارو میکردم ولی در اندروید های 8 به بالا به مشکل بر می خورم
انجمن رو هم جستجو کردم مثل: https://answercenter.ir/topic/18383-اشتراک-گذاری-برنامه-در-داخل-خود-برنامه/
ولی در اندروید های بالا همون مشکل رو داره
آیا قطعه کد جاوایی و یا کد b4a هست که بتونم این مشکل رو حل کنم
ممنون

  • پسندیدن 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

9 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0
محمدرضا شاهپیری    3,743

معاون انجمن

در 2 ساعت قبل، MrMedia گفته است :

سلام من میخواستم برنامه خوذم رو از داخل خود اپ به اشتراک بزارم
قبلا این کارو میکردم ولی در اندروید های 8 به بالا به مشکل بر می خورم
انجمن رو هم جستجو کردم مثل: https://answercenter.ir/topic/18383-اشتراک-گذاری-برنامه-در-داخل-خود-برنامه/
ولی در اندروید های بالا همون مشکل رو داره
آیا قطعه کد جاوایی و یا کد b4a هست که بتونم این مشکل رو حل کنم
ممنون

دوست عزیز چه خطایی دریافت میکنید؟

  • پسندیدن 2

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
MrMedia    89

کاربر رو به رشد

(Exception) java.lang.Exception:  android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/b4a.example/files/sharedB4A Example.apk exposed beyond app through ClipData.Item.getUri()

من Fileprovider رو از این پست گرفتم https://answercenter.ir/topic/23252-مشکل-تداخل-پوشه-و-fileprovider/
ولی نمی دونم چطور خود اپ رو با یک متن به اشتراک بزارم

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
MrMedia    89

کاربر رو به رشد

الان از این کد ها استفاده میکنم

Sub Share
	Dim AppDir As String = GetAppDir(Application.PackageName)
	Dim App_Labal As String = Application.LabelName &".apk"

	Private sharedFolder As String
	sharedFolder = Starter.rp.GetSafeDirDefaultExternal("shared")

	File.Copy("", AppDir , sharedFolder , App_Labal)

	Dim intent As Intent
	intent.Initialize(intent.ACTION_SEND,"")
	intent.SetType("file/*")
	intent.putExtra("android.intent.extra.TEXT", "put your text here")
	intent.PutExtra("android.intent.extra.STREAM", CreateFileProviderUri(sharedFolder, App_Labal))
End Sub

Sub CreateFileProviderUri (Dir As String, FileName As String) As Object
	Dim FileProvider As JavaObject
	Dim context As JavaObject
	context.InitializeContext
	FileProvider.InitializeStatic("android.support.v4.content.FileProvider")
	Dim f As JavaObject
	f.InitializeNewInstance("java.io.File", Array(Dir, FileName))
	Return FileProvider.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
End Sub

Sub GetAppDir(Package As String) As String
	Dim r1,r2 As Reflector,obj As Object
	r1.Target = r1.GetContext
	r1.Target = r1.RunMethod("getPackageManager")
	r1.Target = r1.RunMethod3("getPackageInfo", Package, "java.lang.String", 0x00000001, "java.lang.int")
	obj = r1.GetField("applicationInfo")
	Try
		r2.Target = obj
		Return r2.GetField("sourceDir")
	Catch
		Return ""
	End Try
End Sub

ولی این خطا رو دریافت میکنم
 

(Exception) java.lang.Exception:  java.lang.reflect.InvocationTargetException


 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
alimo1999    64

کاربر رو به رشد

سلام وقت بخیر

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

#if java

import android.os.StrictMode;

public void _onCreate() { //@cafetoseeh

if (android.os.Build.VERSION.SDK_INT >= 18) {

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();

StrictMode.setVmPolicy(builder.build());

//cafetoseeh.ir

builder.detectFileUriExposure();

}}

#End

موفق باشید

  • پسندیدن 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
Salar52    2

کاربر عادی

سلام

شما میتونین بجای توشتن این همه خط، از کتابخانه AriaLib استفاده کنید.

کافیه فقط دو خط پایین رو تو رویداد دلخواهتون قرار بدین.

Dim Aria As AriaLib

StartActivity(Aria.ShareApplication("PackageName" , "اشتراک گذاری با:"))

فقط بجای Pakagename نام بسته(PackageName) برنامه خودتون رو بذارین...

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
behnam_tr    158

کاربر رو به رشد

در در 23 شهریور 1398 در 18:36، Salar52 گفته است :

سلام

شما میتونین بجای توشتن این همه خط، از کتابخانه AriaLib استفاده کنید.

کافیه فقط دو خط پایین رو تو رویداد دلخواهتون قرار بدین.


Dim Aria As AriaLib

StartActivity(Aria.ShareApplication("PackageName" , "اشتراک گذاری با:"))

فقط بجای Pakagename نام بسته(PackageName) برنامه خودتون رو بذارین...

اینم خطا میده اگر sdk بالای 23 کامپایل کنی

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
Salar52    2

کاربر عادی

در در 25 شهریور 1398 در 13:38، behnam_tr گفته است :

اینم خطا میده اگر sdk بالای 23 کامپایل کنی

من الان دارم با اندروید 7 کار می‌کنم که میشه Api25 خطایی هم نمیده.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
mohsen m    118

کاربر رو به رشد

سلام

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

کتابخانه های اشتراک گذاری دیگر را تست کنید.

Try
	کد اشتراک برنامه
Catch
	ToastMessageShow("عدم حمایت دستگاه از این ویژگی",False)
End Try

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
MrMedia    89

کاربر رو به رشد

در در 21 شهریور 1398 در 21:44، alimo1999 گفته است :

سلام وقت بخیر

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

ممنون چک میکنم حتما
 

در در 23 شهریور 1398 در 18:36، Salar52 گفته است :

سلام

شما میتونین بجای توشتن این همه خط، از کتابخانه AriaLib استفاده کنید...

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...