Androidシステム共有

2957 ワード

最近、プロジェクトには他のアプリケーションからコンテンツを共有して自分のアプリケーションに入る必要があります.自分でサードパーティのインタフェースをして他の人に適しているのは現実的ではありません.研究してみると、簡単です.多くのappサポートシステムが共有されています.悪くないようです.
Androidの公式ドキュメントから見ると、システム共有は3つのフォーマットしかサポートされていません.テキスト、画像、複数の画像です.これらにより、他のアプリケーションが共有するデータを受信したり、他のアプリケーションにデータを共有したりすることができます.
  • まず他のアプリケーションが共有するデータを受信するには、インタフェースデータのActivityで構成する必要があります.すなわち、AndroidManitestです.xmlはActivityを構成する可能性があります.このように構成することはできません.それはActivityにandroid:exported=falseを設定し、trueに設定すればいいかもしれません.構成が完了したら、現在設定されているActivityで受信する必要があります:Intent intent=getIntent();String action = intent.getAction(); String type = intent.getType(); if (action.equals(Intent.ACTION_SEND) && type != null) { if (type.equals("text/plain")) { handleSendText(intent); } else if (type.startsWith("image/")) { handleSendImage(intent); } } else if (action.equals(Intent.ACTION_SEND_MULTIPLE) && type != null) { if (type.startsWith("image/")) { handleSendMultiImage(intent); } } else {//do nothing.}
    private void handleSendText(Intent intent) {    
      String shareText = intent.getStringExtra(Intent.EXTRA_TEXT);    
      String title = intent.getStringExtra(Intent.EXTRA_SUBJECT);
      Map stringMap = getContent(intent);    
      if (!TextUtils.isEmpty(shareText)) {        
       //    
      }
    }
    
    private void handleSendImage(Intent intent) {    
      Uri shareUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);   
      if (shareUri != null) {        
        //   
      }
    }
    
    private void handleSendMultiImage(Intent intent) {    
      ArrayList uris = 
        intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);    
      if (uris != null && uris.size() > 0) {
          //   
      }
    }
    

  • 上記のことをして、他のアプリケーションの共有アイコンをクリックすると、自分のアプリケーションアイコンが見えます.
  • データを他のアプリケーションに共有する上のデータ受信プロセスを見て、データをどのように共有するかについて大体の考えがあります.コードを参照してください.private void shareText(){Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_TEXT、「私は世界で一番頭のいい人です!」intent.setType("text/plain"); startActivity(intent); }
    private void shareImage() {    
      Uri uri = Uri.parse("content://notes/data/media/20");    
      Intent intent = new Intent();    
      intent.setAction(Intent.ACTION_SEND);
      intent.putExtra(Intent.EXTRA_STREAM, uri);
      intent.setType("image/*");    
      startActivity(intent);
    }
    
    private void shareMultiImage() {    
      ArrayList uris = new ArrayList<>();
      uris.add(Uri.parse("content://notes/data/media/20"));
      uris.add(Uri.parse("content://notes/data/media/21")); 
      uris.add(Uri.parse("content://notes/data/media/22"));
      uris.add(Uri.parse("content://notes/data/media/23"));
      Intent intent = new Intent();
      intent.setAction(Intent.ACTION_SEND_MULTIPLE);
      intent.putExtra(Intent.EXTRA_STREAM, uris); 
      intent.setType("image/*");    
      startActivity(intent);
    }
    

  • OK、簡単なシステム共有機能が完成!