1.å©ç¨ Android ç³»ç»åç API å®ç°å享åè½ï¼2ï¼
å©ç¨ Android ç³»ç»åç API å®ç°å享åè½ï¼2ï¼
朋朋友亲民源码 å¨ä¹åçä¸ç¯æç« å©ç¨ Android ç³»ç»åç API å®ç°å享åè½ ä¸ä¸»è¦è¯´äºä¸å®ç°æµç¨ï¼ä½å ·ä½å®æ½èµ·æ¥å ¶å®è¿æ¯æ许å¤åè¦é¢å¯¹ãé£è¿ç¯æç« å°±æ¯æä¾ä¸ä¸ªå°è£ 好ç Share2 åºä¾å¤§å®¶åèã朋朋友亲民源码GitHub 项ç®å°åï¼Share2
朋朋友亲民源码çè¿ä¸ä¸ç¯æç« çåå¦åºè¯¥ç¥éï¼è¦è°ç¨ Android ç³»ç»å 建çå享åè½ï¼ä¸»è¦æä¸æ¥æµç¨ï¼
朋朋友亲民源码æ´å¤ç¸å ³å 容请åèä¸ä¸ç¯ï¼è¿éå°±ä¸åéå¤èµè¿°äºã
朋朋友亲民源码ç¥é大è´çå®ç°æµç¨åï¼å ¶å®åªè¦è§£å³ä¸é¢å 个é®é¢åå°±å¯ä»¥å ·ä½å®æ½äºã
朋朋友亲民源码è¿å ¶å®æ¯ç´æ¥å³å®äºæç»çå®ç°å½¢æï¼æ们ç¥é常è§ç使ç¨åºæ¯ä¸ï¼åªæ¯ä¸ºäºå¨åºç¨é´å享å¾çåä¸äºæ件ï¼é£å¯¹äºé£äºåªæ¯å享ææ¬ç产åèè¨ï¼ä¸¤è å®ç°èµ·æ¥è¦èèçé®é¢å®å ¨ä¸åã
朋朋友亲民源码æ以为äºè§£å³è¿ä¸ªé®é¢ï¼æ们å¯ä»¥é¢å å®å¥½æ¯æçå享å 容类åï¼é对ä¸åç±»åå¯ä»¥è¿è¡ä¸åçå¤çã
朋朋友亲民源码å¨ Share2 ä¸ï¼ä¸å ±å®ä¹äº5ç§ç±»å«çå享å 容ï¼åºæ¬è½è¦ç常è§ç使ç¨åºæ¯ãå¨è°ç¨å享æ¥å£æ¶å¯ä»¥ç´æ¥æå®å 容类åï¼æ¯å¦åææ¬ãå¾çãé³è§é¢ãå·²ç»å ¶ä»åç§ç±»åæ件ã
朋朋友亲民源码对äºä¸åç±»å«çå 容ï¼å¯è½ä¼æä¸åçæ¥æºãæ¯å¦ææ¬å¯è½å°±åªæ¯ä¸ä¸ªå符串对象ï¼è对äºå享å¾çæå ¶ä»æ件ï¼æ们éè¦ä¸ä¸ª Uri æ¥æ è¯ä¸ä¸ªèµæºãè¿å ¶å®å°±å¼åºæ¥å ·ä½å®æ½æ¶çä¸ä¸ªå¤§é®é¢ï¼å¦ä½è·åè¦å享æ件ç Uriï¼å¹¶ä¸è¿ä¸ª Uri è¦è½è¢«æ¥æ¶å享å 容çåºç¨å¤çæè¡ ã
朋朋友亲民源码é£ä¹ï¼å¦ä½è·åè¦å享å 容æ件ç Uriï¼å¦æå¤çæè½è®©æ¥æ¶æ¹ä¹è½å¤æ ¹æ® Uri è·åå°æ件ï¼
朋朋友亲民源码æ们ææ件 Uri çæ¥æºåå为ä¸é¢ä¸ç§ç±»åï¼
朋朋友亲民源码常è§åºæ¯ï¼éè¿æ件éæ©å¨è·åä¸ä¸ªæ件ç Uri
朋朋友亲民源码éè¿è¿ç§æ¹å¼è·åå°ç Uri æ¯ç±ç³»ç» ContentProvider è¿åçï¼å¨ Android 4.4 ä¹åççæ¬åä¹åççæ¬æè¾å¤§çåºå«ï¼æ们åé¢å说æä¹å¤çãåªè¦å è®°ä½è¿ç§ç³»ç»è¿åç»æ们ç Uri å°±è¡äºã
朋朋友亲民源码æ¯å¦è°ç¨ç³»ç»ç¸æºè¿è¡æç §æå½å¶é³è§é¢ï¼è¦ä¼ å ¥ä¸ä¸ªçæç®æ æ件ç Uri ï¼ä» 7.0 å¼å§æ们éè¦ç¨å° FileProvider æ¥å®ç°ã
朋朋友亲民源码å¦æç¨å°äº FileProvider å°±è¦æ³¨æè·ç³»ç» ContentProvider è¿å Uri çåºå«ï¼æ¯å¦æä»¬å¨ Manifest ä¸å¯¹ FileProvider é ç½® android:authorities="com.xx.xxx.fileProvider" å±æ§ï¼é£è¿æ¶ç³»ç»è¿åç Uri æ ¼å¼å°±åæäº ï¼ content://com.xx.xxx.fileProvider... ï¼å¯¹äºè¿ç§ç±»åç Uri æ们å§ä¸å«èªå®ä¹ FileProvider è¿åç Uriï¼åé¢ä¸å¹¶è¯´æä¹å¤çã
朋朋友亲民源码æ们è°ç¨ new File æ¶éè¦ä¼ å ¥æå®çæ件路å¾ï¼è¿ä¸ªç»å¯¹è·¯å¾é常æ¯ï¼ /storage/emulated/0/... è¿ç§æ ·å¼ï¼æ们è¦æ³è°ç¨å享æ¶ä¹è¦åæ Uri çå½¢å¼æå¯ä»¥ï¼é£ä¹å¦ä½ææ件路å¾åæä¸ä¸ªæ件 Uri ï¼è¿ä¸ªé®é¢ä¸é¢ä¹ä¸å¹¶è¿è¡åçã
朋朋友亲民源码åé¢æå°äºæ件 Uri çä¸ç§åç±»ï¼å¯¹åºä¸åç±»åå¤çæ¹å¼ä¹ä¸åï¼ä¸ç¶ä½ æå éå°çé®é¢å°±æ¯ï¼
朋朋友亲民源码è¿æ¯ç±äºå¯¹ç³»ç»è¿åç Uri 缺失访é®æé导è´ï¼æ以è¦å¯¹åºç¨è¿è¡ä¸´æ¶è®¿é® Uri çæææè¡ï¼ä¸ç¶ä¼æ示æé缺失ã
朋朋友亲民源码对äºè¦å享系ç»è¿åç Uri æ们å¯ä»¥è¿æ ·è¿è¡å¤çï¼
朋朋友亲民源码éè¦æ³¨æçæ¯å¯¹äºèªå®ä¹ FileProvider è¿å Uri çå¤çï¼å³ä½¿æ¯è®¾ç½®ä¸´æ¶è®¿é®æéï¼ä½æ¯å享å°ç¬¬ä¸æ¹åºç¨ä¹ä¼æ æ³è¯å«è¯¥ Uri
朋朋友亲民源码å ¸åçåºæ¯å°±æ¯ï¼æ们å¦ææèªå®ä¹ FileProvider çè¿åç Uri 设置å享å°å¾®ä¿¡æ QQ ä¹ç±»ç第ä¸æ¹åºç¨ï¼ä¼æ示æ件ä¸åå¨ï¼è¿æ¯å 为ä»ä»¬æ æ³è¯å«è¯¥ Uriã
朋朋友亲民源码å ³äºè¿ä¸ªé®é¢çå¤çå ¶å®è·ä¸é¢è¦è¯´çææ件路å¾åæç³»ç»è¿åç Uri ä¸æ ·ï¼æ们åªéè¦æèªå®ä¹ FileProvider è¿åç Uri åæ第ä¸æ¹åºç¨å¯ä»¥è¯å«ç³»ç»è¿åç Uri å°±è¡äºã
朋朋友亲民源码å建 FileProvider æ¶éè¦ä¼ å ¥ä¸ä¸ª File 对象ï¼æ以ç´æ¥å¯ä»¥ç¥éæ件路å¾ï¼é£å°±æé®é¢é½è½¬æ¢æäºï¼å¦ä½éè¿æ件路å¾è·åç³»ç»è¿åç Uri
朋朋友亲民源码ä¸é¢æ¯æ ¹æ®ä¼ å ¥ç File 对象åç±»åæ¥æ¥è¯¢ç³»ç» ContentProvider æ¥è·åç¸åºç Uriï¼å·²ç»æç §ä¸åæ件类åå¨ä¸åç³»ç»çæ¬ä¸çè¿è¡äºéé ã
朋朋友亲民源码å ¶ä¸ forceGetFileUri æ¹æ³æ¯éè¿åå°å®ç°çï¼å¤ç 7.0 以ä¸ç³»ç»çç¹æ®æ åµä¸çå ¼å®¹æ§ï¼ä¸è¬æ åµä¸ä¸ä¼è°ç¨å°ãAndroid 7.0 å¼å§ä¸å 许 file:// Uri çæ¹å¼å¨ä¸åç App é´å ±äº«æ件ï¼ä½æ¯å¦ææ¢æ FileProvider çæ¹å¼ä¾ç¶æ¯æ æçï¼æ们å¯ä»¥éè¿åå°æ该æ£æµå¹²æã
朋朋友亲民源码éè¿ File Path 转æ Uri çæ¹å¼ï¼æ们æç»ç»ä¸äºè°ç¨ç³»ç»å享æ¶ä¼ å ¥å 容 Uri çä¸ç§ä¸ååºæ¯ï¼æç»å ¨é¨è½¬æ¢ä¸ºä¼ éç³»ç»è¿åç Uriï¼è®©ç¬¬ä¸æ¹åºç¨è½å¤æ£å¸¸çè·åå°å享å 容ã
朋朋友亲民源码Share2 æç §ä¸è¿°æ¹æ³è¿è¡äºå ·ä½å®æ½ï¼å¯ä»¥éè¿ä¸é¢çæ¹å¼è¿è¡éæï¼
朋朋友亲民源码å享å¾çå°æå®çé¢ï¼æ¯å¦å享å°å¾®ä¿¡æåå
朋朋友亲民源码GitHub 项ç®å°åï¼Share2
朋朋友亲民源码朋朋友亲民源码