中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Android調用系統分享給微信,出現分享失敗,分享多文件必須為圖片格式問題如何解決

Android調用系統分享給微信,出現分享失敗,分享多文件必須為圖片格式問題如何解決

發布時間:2020-11-03 19:29:53 來源:億速云 閱讀:1258 作者:Leah 欄目:開發技術

本篇文章為大家展示了Android調用系統分享給微信,出現分享失敗,分享多文件必須為圖片格式問題如何解決,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

 private void systemShareWeChat(int shareTag,String photoPath){
    Resources res=getResources();
    Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.share);
    File f = null;

    ComponentName comp1,comp;
    comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");//調用系統分享給微信朋友
    comp1 = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");//調用系統分享給微信朋友圈

    try {
    //將Android中drawable圖片保存到本地
      String dir= Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"share"+".jpg";
       f = new File(dir);
      if (!f.exists()) {
        f.getParentFile().mkdirs();
        f.createNewFile();
      }
      FileOutputStream out = new FileOutputStream(f);
      bmp.compress(Bitmap.CompressFormat.PNG, 80, out);
      out.flush();
      out.close();
      Uri uri = FileProvider.getUriForFile(NativePhoto.this.getApplicationContext(),
          "com.lipuwulian.blesample.provider", f);//這個是版本大于Android7.0(包含)臨時訪問文件,沒有這個會報異常
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace(); }

    ArrayList<Uri> imageUris = new ArrayList<Uri>();
    imageUris.add(UrigetImageContentUri(NativePhoto.this,new File(photoPath)));//這個是分享本地存儲的圖片
    imageUris.add(UrigetImageContentUri(NativePhoto.this,f));
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
    if(shareTag==0){
      shareIntent.setComponent(comp1);//分享給微信朋友圈
    }else if(shareTag==1){
      shareIntent.setComponent(comp);//分享給微信朋友
    }
    //如果去掉shareIntent.setComponent("*");系統會調出所有的分享軟件
    shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
    shareIntent.setType("image/*");
    startActivity(shareIntent);

  }

//如果是微信分享的話一定一定將這個直接復制到自己項目中,將自己圖片路徑換為content:不然就會出現上述錯誤

public static Uri UrigetImageContentUri(Context context, File imageFile) {

    String filePath = imageFile.getAbsolutePath();
    Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA +"=&#63; ", new String[]{filePath}, null);

    Uri uri =null;

    if (cursor !=null) {
      if (cursor.moveToFirst()) {

        int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));

        Uri baseUri = Uri.parse("content://media/external/images/media");

        uri = Uri.withAppendedPath(baseUri, "" + id);
    }
      cursor.close();
    }
    if (uri ==null) {
      ContentValues values =new ContentValues();
      values.put(MediaStore.Images.Media.DATA, filePath);
      uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    }
    return uri;

  }

這樣就解決了調用系統分享報出分享失敗,分享多文件必須為圖片格式的錯誤了。

在AndroidManifest中臨時文件注冊解決Android7.0版本及其之后文件uri報錯問題

<application
    android:allowBackup="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name1"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <!--    //臨時訪問文件的注冊-->
    <provider
      android:name="android.support.v4.content.FileProvider"
      android:authorities="com.lipuwulian.blesample.provider"//這是自己的包名加“.provider”
      android:exported="false"
      android:grantUriPermissions="true">
      <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
    </provider>

    <activity android:name="com.lipuwulian.blesample.MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
   
  </application>

在res文件夾下創建xml文件夾、

Android調用系統分享給微信,出現分享失敗,分享多文件必須為圖片格式問題如何解決

file_paths文件里的內容:path是data/包名加.testapplication/

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<resources>
  <paths>
    <external-path
      name="files_root"
      path="Android/data/com.lipuwulian.blesample.testapplication/" />
    <external-path
      name="external_storage_root"
      path="." />
  </paths>
</resources>

上述內容就是Android調用系統分享給微信,出現分享失敗,分享多文件必須為圖片格式問題如何解決,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹿泉市| 界首市| 东方市| 伊金霍洛旗| 牟定县| 凤庆县| 汤阴县| 军事| 谢通门县| 高要市| 南郑县| 长岛县| 于田县| 三门峡市| 丹凤县| 安图县| 文昌市| 平安县| 溧阳市| 常山县| 博罗县| 曲阜市| 从江县| 峨眉山市| 板桥市| 梁河县| 田林县| 荥经县| 商城县| 利辛县| 资讯| 姜堰市| 辰溪县| 上栗县| 漾濞| 泽库县| 南雄市| 平安县| 潍坊市| 普兰县| 微博|