Flutter Dev نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع لدي استفسار لو تكرمتو .. لدي الكود التالي لمشاركة الصور من تطبيقي الى تطبيق الواتساب على سبيل المثال : // Share image private void shareImage( ) { Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); sharingIntent.setType("image/*"); sharingIntent.putExtra(Intent.EXTRA_STREAM, imageUri); startActivity(Intent.createChooser(sharingIntent, "Share Image Using")); } ولكن لدي مشكلة كالتالي: انا استخدم هذا الكود في activity تم جلب الصور فيه من خلال Intent الكود التالي : final String imurl = i.getStringExtra("Image"); واقوم بعرضها من خلال مكتبة البيكاسو : Picasso.get().load(imurl).into(imageviews); سوالي الان لو ارغب بمشاركة هذا الصورة المعروضه الى الان تطبيق الواتساب مثلا كيف ممكن اعدل على كود مشاركة الصور الذي سبق وقمت بادراجه في اول السوال ؟ 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 وعليكم السلام أخي @مروان مروان3 أتوقع يمكنك عمل التعديل على الفنكشن وتمرير متغير الصورة imurl إلى ال intent أي هكذا // Share image private void shareImage( ) { Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); sharingIntent.setType("image/*"); sharingIntent.putExtra(Intent.EXTRA_STREAM, imurl); startActivity(Intent.createChooser(sharingIntent, "Share Image Using")); } هذه الجزء تحديداً sharingIntent.putExtra(Intent.EXTRA_STREAM, imurl); لاحظ imurl اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 (معدل) بتاريخ 5 دقائق مضت قال Mohamd Imran: وعليكم السلام أخي @مروان مروان3 أتوقع يمكنك عمل التعديل على الفنكشن وتمرير متغير الصورة imurl إلى ال intent أي هكذا // Share image private void shareImage( ) { Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); sharingIntent.setType("image/*"); sharingIntent.putExtra(Intent.EXTRA_STREAM, imurl); startActivity(Intent.createChooser(sharingIntent, "Share Image Using")); } هذه الجزء تحديداً sharingIntent.putExtra(Intent.EXTRA_STREAM, imurl); لاحظ imurl لم ينفع ذلك عزيزي جربت ذلك سابقا والخطا كان كالتالي: String failed,please try agein تم التعديل في 1 يوليو 2020 بواسطة مروان مروان3 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 3 دقائق مضت قال مروان مروان3: لم ينفع ذلك عزيزي جربت ذلك سابقا تمام ,أتوقع إنك تريد مشاركة الصورة من ال imageView إن كان كذلك فقط عدل الفنكشن إلى التالي // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } هكذا سيتم مشاركة الصورة من ال imageView ,أعلمني بالنتيجة اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 بتاريخ 5 دقائق مضت قال Mohamd Imran: تمام ,أتوقع إنك تريد مشاركة الصورة من ال imageView إن كان كذلك فقط عدل الفنكشن إلى التالي // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } هكذا سيتم مشاركة الصورة من ال imageView ,أعلمني بالنتيجة يحدث الاكراش التالي اخي: Process: com.example.myapplication, PID: 8410 java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference at com.example.myapplication.Fragmantmarket.ViewOrders.shareImage(ViewOrders.java:259) at com.example.myapplication.Fragmantmarket.ViewOrders.onCreateView(ViewOrders.java:251) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447) at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1818) at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:303) at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:246) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092) at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622) at android.view.View.measure(View.java:21051) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21051) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143) at android.view.View.measure(View.java:21051) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21051) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:21051) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21051) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:853) at android.view.View.measure(View.java:21051) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2583) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1642) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1893) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1522) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7098) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927) at android.view.Choreographer.doCallbacks(Choreographer.java:702) 2020-07-01 23:35:28.035 8410-8410/com.example.myapplication E/AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:638) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 3 دقائق مضت قال مروان مروان3: يحدث الاكراش التالي اخي: تأكد من تحميل الصورة في الفيو قبل إستدعاء الفنكشن مثال Picasso.get().load(imurl).into(imageviews); وأيضا إسم الفيو لديك هو imageviews لذلك عدل ذلك في الفنكشن إلى التالي // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 (معدل) بتاريخ 6 دقائق مضت قال Mohamd Imran: تأكد من تحميل الصورة في الفيو قبل إستدعاء الفنكشن مثال Picasso.get().load(imurl).into(imageviews); وأيضا إسم الفيو لديك هو imageviews لذلك عدل ذلك في الفنكشن إلى التالي // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } هذا النتيجة اخي الكراش التالي: 2020-07-01 23:46:58.318 13563-13563/com.example.myapplication E/MediaStore: Failed to insert image java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=13563, uid=10315 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission() at android.os.Parcel.readException(Parcel.java:1693) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476) at android.content.ContentResolver.insert(ContentResolver.java:1280) at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:1025) at com.example.myapplication.Fragmantmarket.ViewOrders.shareImage(ViewOrders.java:266) at com.example.myapplication.Fragmantmarket.ViewOrders.access$200(ViewOrders.java:65) at com.example.myapplication.Fragmantmarket.ViewOrders$5.onClick(ViewOrders.java:253) at android.view.View.performClick(View.java:6205) at android.widget.TextView.performClick(TextView.java:11103) at android.view.View$PerformClick.run(View.java:23653) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 2020-07-01 23:46:58.319 13563-13563/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 13563 java.lang.NullPointerException: uriString at android.net.Uri$StringUri.<init>(Uri.java:475) at android.net.Uri$StringUri.<init>(Uri.java) at android.net.Uri.parse(Uri.java:437) at com.example.myapplication.Fragmantmarket.ViewOrders.shareImage(ViewOrders.java:267) at com.example.myapplication.Fragmantmarket.ViewOrders.access$200(ViewOrders.java:65) at com.example.myapplication.Fragmantmarket.ViewOrders$5.onClick(ViewOrders.java:253) at android.view.View.performClick(View.java:6205) at android.widget.TextView.performClick(TextView.java:11103) at android.view.View$PerformClick.run(View.java:23653) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) بنسبه لمسميات imageviews لا باس بالاختلاف لني اجرب على مشروعين حتى ارء النتيجة مشروع مفصل صغير حتى لا اتوه بالمشروع الكامل وبنسبه لتحميل هذا الكراش الان والتحميل مكتمل تم التعديل في 1 يوليو 2020 بواسطة مروان مروان3 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 1 دقيقة مضت قال مروان مروان3: وبنسبه لتحميل هذا الكراش الان والتحميل مكتمل سبب الخطأ هو يخبرك بأنه يحتاج إلى ال permission لتخزين الصورة قم بإعطاءه ذلك أما من خلال الدخول على التطبيق من الجوال من خلال التطبيقات ثم الصلاحيات أو ما شابه ,أو قم بإضافة ال permssion المطلوب في ملف mainfest وهو هذا android.permission.WRITE_EXTERNAL_STORAGE ثم قم بالتجربة 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 بتاريخ 5 دقائق مضت قال Mohamd Imran: سبب الخطأ هو يخبرك بأنه يحتاج إلى ال permission لتخزين الصورة قم بإعطاءه ذلك أما من خلال الدخول على التطبيق من الجوال من خلال التطبيقات ثم الصلاحيات أو ما شابه ,أو قم بإضافة ال permssion المطلوب في ملف mainfest وهو هذا android.permission.WRITE_EXTERNAL_STORAGE ثم قم بالتجربة اذا قصدك هذا الصلاحيه ف انا مفعلها ولكن يظهر لي نفس لكراش وبنسبه ل ملف المينفاست انا عامل ادراج ل صلاحيه ايضا بيه 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 15 دقائق مضت قال مروان مروان3: اذا قصدك هذا الصلاحيه ف انا مفعلها ولكن يظهر لي نفس لكراش وبنسبه ل ملف المينفاست انا عامل ادراج ل صلاحيه ايضا بيه جرب إغلاق التطبيق تماماً ,وقم بتشغيله مرة أخرى في حال لم ينفع ,ما هو إصدار الminSDK لديك في ملف ال mainfest 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 بتاريخ الآن قال Mohamd Imran: جرب إغلاق التطبيق تماماً ,وقم بتشغيله مرة أخرى في حال لم ينفع ,ما هو إصدار الminSDK لديك في ملف ال mainfest بنسبه ل صلاحيات mainfest android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> اما لجريدل compileSdkVersion 28 minSdkVersion 16 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 7 دقائق مضت قال مروان مروان3: بنسبه ل صلاحيات mainfest تمام قم بإضافة الصلاحيات من خلال ال intent في الفنكشن هكذا // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } لاحظ shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 (معدل) بتاريخ 5 دقائق مضت قال Mohamd Imran: تمام قم بإضافة الصلاحيات من خلال ال intent في الفنكشن هكذا // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } لاحظ shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); نفس المشكلة عزيزي الكراش كالتالي: 2020-07-02 00:31:48.100 26184-26184/com.example.myapplication E/MediaStore: Failed to insert image java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=26184, uid=10315 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission() هذا شكل الكود كامل لدي الان : private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) prImg.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } تم التعديل في 1 يوليو 2020 بواسطة مروان مروان3 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 8 دقائق مضت قال مروان مروان3: هذا شكل الكود كامل لدي الان : هذه مشكلة نظام أندرويد (إختلاف طريقة الحصول على صلاحية تخزين الملفات)أو بالتحديد من ال SDK قم بإضافة الميثود التالية فوق الفنكشنshareImage الخاص بنا public void grantPermissions(Context context, Intent intent, Uri uri, boolean writeAble) { int flag = Intent.FLAG_GRANT_READ_URI_PERMISSION; if (writeAble) { flag |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } intent.addFlags(flag); List<ResolveInfo> resInfoList = context.getPackageManager() .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : resInfoList) { String packageName = resolveInfo.activityInfo.packageName; context.grantUriPermission(packageName, uri, flag); } } ثم نقوم بإضافتها في الفنكشن هكذا // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); grantPermissions(this,shareIntent,bitmapUri,true); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 بتاريخ 5 دقائق مضت قال Mohamd Imran: هذه مشكلة نظام أندرويد أو بالتحديد من ال SDK قم بإضافة الميثود التالية فوق الفنكشنshareImage الخاص بنا public void grantPermissions(Context context, Intent intent, Uri uri, boolean writeAble) { int flag = Intent.FLAG_GRANT_READ_URI_PERMISSION; if (writeAble) { flag |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } intent.addFlags(flag); List<ResolveInfo> resInfoList = context.getPackageManager() .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : resInfoList) { String packageName = resolveInfo.activityInfo.packageName; context.grantUriPermission(packageName, uri, flag); } } ثم نقوم بإضافتها في الفنكشن هكذا // Share image private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); grantPermissions(this,shareIntent,bitmapUri,true); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } لا تزال المشكلة مستمره غريبه صراحه الامر الكود كامل الان كالتالي :مع العلم اني استخدم الكود في Fragment shareImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { shareImage(); } }); return rootView; } public void grantPermissions(Context context, Intent intent, Uri uri, boolean writeAble) { int flag = Intent.FLAG_GRANT_READ_URI_PERMISSION; if (writeAble) { flag |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } intent.addFlags(flag); List<ResolveInfo> resInfoList = context.getPackageManager() .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : resInfoList) { String packageName = resolveInfo.activityInfo.packageName; context.grantUriPermission(packageName, uri, flag); } } private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) prImg.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); grantPermissions(getContext(),shareIntent,bitmapUri,true); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 2 دقائق مضت قال مروان مروان3: لا تزال المشكلة مستمره غريبه صراحه الامر سبب المشكلة هو من الهاتف الذي تقوم بتشغيل التطبيق عليه يملك إصدار أندرويد عالي مثل ٩ او ١٠ ,الخ.. وفي هذه الإصدارات يجب الحصول على الصلاحيات من التطبيق الذي تريد المشاركة علية أقصد في حالتك هو الواتس أب يوجد خيارات أول واحد هو حاول تجربة التطبيق على جهاز ذو إصدار أندرويد منخفض مثل ٥ أو ٦ الخيار الثاني هو جرب إضافة إسم الباكيج الخاص بالواتس أب إلى الفنشكن هكذا بشكل يدوي private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) prImg.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); String packageName = "com.whatsapp"; this.grantUriPermission(packageName,bitmapUri,Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } وقم بالتجربة مرة أخرى إن لم ينفع أيضاً ,تفقد صلاحيات الواتس أب 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 بتاريخ 6 دقائق مضت قال Mohamd Imran: سبب المشكلة هو من الهاتف الذي تقوم بتشغيل التطبيق عليه يملك إصدار أندرويد عالي مثل ٩ او ١٠ ,الخ.. وفي هذه الإصدارات يجب الحصول على الصلاحيات من التطبيق الذي تريد المشاركة علية أقصد في حالتك هو الواتس أب يوجد خيارات أول واحد هو حاول تجربة التطبيق على جهاز ذو إصدار أندرويد منخفض مثل ٥ أو ٦ الخيار الثاني هو جرب إضافة إسم الباكيج الخاص بالواتس أب إلى الفنشكن هكذا بشكل يدوي private void shareImage( ) { BitmapDrawable bitmapDrawable = ((BitmapDrawable) prImg.getDrawable()); Bitmap myimg = bitmapDrawable .getBitmap(); String bitmapPath = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), myimg,"some title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent shareIntent=new Intent(Intent.ACTION_SEND); String packageName = "com.whatsapp"; this.grantUriPermission(packageName,bitmapUri,Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(shareIntent,"Share Image")); } وقم بالتجربة مرة أخرى إن لم ينفع أيضاً ,تفقد صلاحيات الواتس أب العذر وسموحه اخي تعبتك معي بنسبه ل اصدار نظام التشغيل هو 7.0 الذي اقوم بالاختبار عليه ليس جديد وبنسبه ل اضافة باكينج واتساب المشكلة تحدث بمجرد ان اضغط على زر المشاركة يعني شاشة اختيار التطبيقات التي سوف اشارك الصوره معها لا تظهر بالاساس الكرش يحدث قبل ذلك 1 اقتباس
0 Mohamd Imran نشر 1 يوليو 2020 أرسل تقرير نشر 1 يوليو 2020 بتاريخ 5 دقائق مضت قال مروان مروان3: وبنسبه ل اضافة باكينج واتساب المشكلة تحدث بمجرد ان اضغط على زر المشاركة يعني شاشة اختيار التطبيقات التي سوف اشارك الصوره معها لا تظهر بالاساس الكرش يحدث قبل ذلك ولا يهمك أخي ,هل يمكنك مشاركة ملف التطبيق كامل ,حتى أتفحصه ربما سبب المشكلة خطأ في مكان أخر 1 اقتباس
0 Flutter Dev نشر 1 يوليو 2020 الكاتب أرسل تقرير نشر 1 يوليو 2020 (معدل) بتاريخ 3 دقائق مضت قال Mohamd Imran: ولا يهمك أخي ,هل يمكنك مشاركة ملف التطبيق كامل ,حتى أتفحصه ربما سبب المشكلة خطأ في مكان أخر تم اخي دقائق فقط رح اعمل نسخه مصغره من المشروع وارفقها تم التعديل في 1 يوليو 2020 بواسطة مروان مروان3 1 اقتباس
السؤال
Flutter Dev
السلام عليكم ورحمة الله وبركاته
تحيه طيبه للجميع
لدي استفسار لو تكرمتو .. لدي الكود التالي لمشاركة الصور من تطبيقي الى تطبيق الواتساب على سبيل المثال :
ولكن لدي مشكلة كالتالي:
انا استخدم هذا الكود في activity تم جلب الصور فيه من خلال Intent الكود التالي :
واقوم بعرضها من خلال مكتبة البيكاسو :
سوالي الان لو ارغب بمشاركة هذا الصورة المعروضه الى الان تطبيق الواتساب مثلا كيف ممكن اعدل على كود مشاركة الصور الذي سبق وقمت بادراجه في اول السوال ؟
18 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.