android9.0独自のアプリケーションは、オープン・共有システムのリストに参加します

序文

以下のAndroid7.0バージョンとファイルパスウリの相互変換パッケージタイプ、システムの共有とFileProvider詳細な分析のためのピットガイドラインを強化し、fileproviderはウリが特定できない生成された  、オープンのシステムにどのように独自のアプリケーションについてのアンドロイドの話を方法とリストを共有。

 

1、彼らの共有アプリケーションのリストを表示


①システムのデフォルトの共有システムを使用して、アプリケーションのリストを共有することで呼び出されますが、独自のアプリケーションがリストにそれに参加するようにする方法?まず、あなたが設定する必要があるのAndroidManifest.xmlを、ページを共有するには、以下の活動に参加するインテントフィルタを
 

<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>

これは、サードパーティのアプリケーションは、そのアプリケーションがリストに表示されたときに共有するために濾過共有することができます。
②、意図に対応するアクティビティに関連するデータへのアクセスを、コンテンツを受信します

title = intent.getStringExtra(SHARE_IMG_TITLE);
(Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM)
Intent intent = getIntent();
        String action = intent.getAction();
        if (Intent.ACTION_SEND.equals(action)) {
            Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
//            Uri uri = intent.getData();
            String filename = uri.getPath();
            if (String.valueOf(uri) != null
                    && String.valueOf(uri).contains("content")) {
                boolean kkk = false;
                try{
                    filename = CommonUtils.getFilePathFromContentUri(uri,this.getContentResolver());
                    if(CommonUtils.isEmpty(filename)){
                        kkk = true;
                    }
                }catch (Exception e){
                    e.printStackTrace();
                    kkk = true;
                }
                if(kkk){
                    filename = ProviderUtils.getFPUriToPath(this,uri);
                }
            }

注:CommonUtils.getFilePathFromContentUri()およびProviderUtils.getFPUriToPath()メソッドは、参照Android7.0バージョンとファイルパスURIクラス相互変換パッケージ、及びFileProvider詳細な分析とステップ案内孔を共有するシステムを実装し、生成fileproviderはURIを認識できません  ここではそれらを繰り返すありません。


具体的MIMEタイプ类型有
{ ".3GP"、 "ビデオ/ 3GPP"}、
{ "の.apk"、 "アプリケーション/ vnd.android.packageアーカイブ"}、
{ "の.asf"、「ビデオ/ X-MS- ASF "}、
{" .AVI " "ビデオ/ X-MSVIDEO"}、
{" .binの" "アプリケーション/オクテットストリーム"}、
{" .BMP " "画像/ BMP"}、
{"。 C " "text / plainの"}、
{"の.class " "アプリケーション/オクテットストリーム"}、
{"の.conf " "text / plainの"}、
{" .CPP」、 "text / plainの"} 、
{ ".DOC"、 "アプリケーション/ mswordは"}、
{ ".EXE"、 "アプリケーション/オクテットストリーム"}、
{ ".GIF"、 "画像/ GIF"}、
{ ".gtar"、"/ X-GTARアプリケーション"}、
{ "の.gz"、 "アプリケーション/ X-GZIP"}、
{ ".H"、 "text / plainの"}、
{ "の.htm"、 "text / htmlの"}、
{ "の.html"、 "text / htmlの"}、
{ "の.jar"、 "アプリケーション/ Javaベースのアーカイブ"}、
{ "の.java"、 "text / plainの"}、
{ ".JPEG"、 "画像/ JPEG"}、
{ ".JPG"、 "画像/ JPEG"}、
{ "の.js"、「アプリケーション/ X-ジャバスクリプト"}、
{"の.log " "text / plainの"}、
{"は.m3u " "オーディオ/ X-mpegurl"}、
{" .M4A " "オーディオ/ MP4A-LATM"}、
{"。 M4B " "オーディオ/ MP4A-LATM"}、
{" .m4p " "オーディオ/ MP4A-LATM"}、
{" .m4u " "ビデオ/ vnd.mpegurl"}、
{" .m4v ""ビデオ/ X-M4V "}、
{" .MOV " "ビデオ/ QuickTimeの"}、
{" .mp2" 、 "オーディオ/ X-MPEG"}、
{」.MP3" 、 "オーディオ/ X-MPEG"}、
{ "のMP4" 、"ビデオ/ MP4 "}、
{" .mpc " "アプリケーション/ vnd.mpohun.certificate"}、
{" .mpe " "ビデオ/ MPEG"}、
{" .MPEG」、 "ビデオ/ MPEG"}、
{ ".MPG"、 "ビデオ/ MPEG"}、
{ ".mpg4" 、 "ビデオ/ MP4"}、
{" .mpga」、 "オーディオ/ MPEG"}、
{ ".MSG"、 "アプリケーション/ vnd.ms-展望"}、
{ ".OGG"、 "オーディオ/ OGG"}、
{ ".PDF"、 "アプリケーション/ PDF"}、
{ ".PNG"、 "画像/ PNG "}、
{"拡張子.pps " "アプリケーション/ vnd.ms-パワーポイント"}、
{" .PPT " "アプリケーション/ vnd.ms-パワーポイント"}、
{" .prop "" text / plainの"}、
{" .RAR " "アプリケーション/ X-RAR圧縮"}、
{" .RC " "text / plainの"}、
{" .rmvbを」、 ""オーディオ/のX-PN-リアルオーディオ}
{ ".RTF"、 "アプリケーション/ RTF"}、
{ ".SH"、 "text / plainの"}、
{ "の.tar"、 "アプリケーション/ X-タール"}、
{ "の.tgz"、 "アプリケーション/ X圧縮"}、
{" .txtファイル" "text / plainの"}、
{" .WAV " "オーディオ/ X-WAV"}、
{"。WMA ""オーディオ/ X-MS-WMA "}、
{" .WMV " "オーディオ/ X-MS-WMV"}、
{" .wps」、 "アプリケーション/ vnd.ms-作品"}、
//{".xml " "text / xmlで"}、
{"の.xml " "text / plainの"}、
{" .Z " "アプリケーション/ X-圧縮"}、
{"の.zip ""アプリケーション/ ZIP "}、
{" "" /「}

2、独自のアプリケーションを向上させる道を開きます


①アンドリュースは、マイクロチャネルとしてオープンサードパーティ製のアプリケーションは、ファイルを開く開くにはサードパーティ製のアプリケーションを選択しているオープンは、実際には、単にビューをフィルタリングする具体的な方法、共有考慮し、類似した名前を共有することができます]を選択し、一般的メイクで開いているファイル

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>

②活動の中

Intent intent = getIntent();
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
            Uri uri = intent.getData();
            String filename = uri.getPath();
            if (String.valueOf(uri) != null
                    && String.valueOf(uri).contains("content")) {
                boolean kkk = false;
                try{
                    filename = CommonUtils.getFilePathFromContentUri(uri,this.getContentResolver());
                    if(CommonUtils.isEmpty(filename)){
                        kkk = true;
                    }
                }catch (Exception e){
                    e.printStackTrace();
                    kkk = true;
                }
                if(kkk){
                    filename = ProviderUtils.getFPUriToPath(this,uri);
                }
            }

 

おすすめ

転載: blog.csdn.net/P876643136/article/details/91038276