Home | History | Annotate | Download | only in intents
      1 page.title=    
      2 page.tags= Intent
      3 helpoutsWidget=true
      4 
      5 trainingnavtop=true
      6 
      7 @jd:body
      8 
      9 
     10 <div id="tb-wrapper">
     11   <div id="tb">
     12 
     13 <h2>  </h2>
     14 <ol>
     15   <li><a href="#Build">   Intent</a></li>
     16   <li><a href="#Verify">      Intent</a></li>
     17   <li><a href="#StartActivity">    Intent</a></li>
     18   <li><a href="#AppChooser">   </a></li>
     19 </ol>
     20 
     21 <h2>. :</h2>
     22 <ul>
     23     <li><a href="{@docRoot}training/sharing/index.html">    </a></li>
     24 </ul>
     25 
     26   </div>
     27 </div>
     28 
     29 <p>      Android        
     30     . , 
     31     ,     ,       
     32  .        
     33   {@link android.content.Intent}.     Android  ,
     34     .</p>
     35 
     36 <p>     <a href="{@docRoot}training/basics/firstapp/index.html">
     37  </a>,  Intent         . 
     38    <em>  Intent</em>,    
     39 ,    .    ,   (
     40  )   ,   <em>  Intent</em>.</p>
     41 
     42 <p>    ,     Intent      
     43   ,     .</p>
     44 
     45 
     46 
     47 <h2 id="Build">   Intent</h2>
     48 
     49 <p>  Intent      ,  
     50  .   ,    ,  <em></em>,
     51 <em></em>,<em> </em>  <em></em> -.  Intent    , 
     52  ,         .
     53    ,   Intent   ,      {@link android.net.Uri},
     54      ,       .</p>
     55 
     56 <p>      {@link android.net.Uri},      {@link
     57 android.content.Intent#Intent(String,Uri) Intent()}    
     58 .</p>
     59 
     60 <p>    Intent    ,    {@link
     61 android.net.Uri}     :</p>
     62 
     63 <pre>
     64 Uri number = Uri.parse("tel:5551234");
     65 Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
     66 </pre>
     67 
     68 <p>      Intent   {@link android.app.Activity#startActivity
     69 startActivity()},  ""      .</p>
     70 
     71 <p>    Intent      {@link android.net.Uri} 
     72 :</p>
     73 
     74 <ul>
     75   <li> :
     76 <pre>
     77 // Map point based on address
     78 Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
     79 // Or map point based on latitude/longitude
     80 // Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z param is zoom level
     81 Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
     82 </pre>
     83   </li>
     84   <li> -:
     85 <pre>
     86 Uri webpage = Uri.parse("http://www.android.com");
     87 Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
     88 </pre>
     89   </li>
     90 </ul>
     91 
     92 <p>    Intent   ,    ,
     93  .              {@link
     94 android.content.Intent#putExtra(String,String) putExtra()}.</p>
     95 
     96 <p>      MIME,    Intent    
     97 {@link android.net.Uri}.    {@link android.net.Uri}  
     98 Intent,    {@link android.content.Intent#setType setType()}   
     99 ,    Intent.   MIME  ,  
    100     Intent.</p>
    101 
    102 <p>   Intent,       :</p>
    103 
    104 <ul>
    105   <li>    :
    106 <pre>
    107 Intent emailIntent = new Intent(Intent.ACTION_SEND);
    108 // The intent does not have a URI, so declare the "text/plain" MIME type
    109 emailIntent.setType(HTTP.PLAIN_TEXT_TYPE);
    110 emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon (a] example.com"}); // recipients
    111 emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
    112 emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");
    113 emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));
    114 // You can also attach multiple items by passing an ArrayList of Uris
    115 </pre>
    116   </li>
    117   <li>   :
    118 <pre>
    119 Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
    120 Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);
    121 Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);
    122 calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
    123 calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
    124 calendarIntent.putExtra(Events.TITLE, "Ninja class");
    125 calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");
    126 </pre>
    127 <p class="note"><strong>.</strong>   Intent       
    128 API-  14  .</p>
    129   </li>
    130 </ul>
    131 
    132 <p class="note"><strong>.</strong>     {@link
    133 android.content.Intent}    . ,     
    134    Intent {@link android.content.Intent#ACTION_VIEW},     MIME
    135 {@code image/*}.     Intent      
    136  (  ).</p>
    137 
    138 
    139 
    140 <h2 id="Verify">      Intent</h2>
    141 
    142 <p>  Android    Intent 
    143   (  "", " "  ""),    Intent    
    144 .</p>
    145 
    146 <p class="caution"><strong>!</strong>     Intent,    
    147  ,   ,     .</p>
    148 
    149 <p>    ,    Intent,   {@link
    150 android.content.pm.PackageManager#queryIntentActivities queryIntentActivities()}   
    151 ,    {@link android.content.Intent}.      {@link
    152 java.util.List}  ,       Intent. :</p>
    153 
    154 <pre>
    155 PackageManager packageManager = {@link android.content.Context#getPackageManager()};
    156 List<ResolveInfo> activities = packageManager.queryIntentActivities(intent,
    157         PackageManager.MATCH_DEFAULT_ONLY);
    158 boolean isIntentSafe = activities.size() > 0;
    159 </pre>
    160 
    161 <p><code>isIntentSafe</code>   <code>true</code>,        
    162 Intent.      <code>false</code>,          Intent.</p>
    163 
    164 <p class="note"><strong>.</strong>      
    165    ,    ,   Intent,  ,    
    166 .     ,      Intent,    ,
    167       (,  <a href="{@docRoot}distribute/tools/promote/linking.html">      Google
    168 Play</a>).</p>
    169 
    170 
    171 <h2 id="StartActivity">    Intent</h2>
    172 
    173 <div class="figure" style="width:200px;margin-top:-10px">
    174   <img src="{@docRoot}images/training/basics/intents-choice.png" alt="" />
    175   <p class="img-caption"><strong> 1.</strong>    ,
    176  ,   Intent    .</p>
    177 </div>
    178 
    179 <p>  {@link android.content.Intent}      {@link
    180 android.app.Activity#startActivity startActivity()}    .  
    181   ,    Intent,      
    182  ,     1.   Intent   
    183   ,     .</p>
    184 
    185 <pre>
    186 startActivity(intent);
    187 </pre>
    188 
    189 <p>  , ,    Intent   ,   
    190        :</p>
    191 
    192 <pre>
    193 // Build the intent
    194 Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
    195 Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
    196 
    197 // Verify it resolves
    198 PackageManager packageManager = {@link android.content.Context#getPackageManager()};
    199 List&lt;ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
    200 boolean isIntentSafe = activities.size() > 0;
    201 
    202 // Start an activity if it's safe
    203 if (isIntentSafe) {
    204     startActivity(mapIntent);
    205 }
    206 </pre>
    207 
    208 
    209 
    210 <h2 id="AppChooser">   </h2>
    211 
    212 <div class="figure" style="width:200px;margin-top:-10px">
    213   <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="" />
    214   <p class="img-caption"><strong> 2</strong>.  .</p>
    215 </div>
    216 
    217 <p> ,       {@link android.content.Intent}  {@link
    218 android.app.Activity#startActivity startActivity()}    ,  
    219  Intent,   ,        (      
    220   ; .  1).     ,  
    221          ,    - (
    222       )    (        ).</p>
    223 
    224 <p>  ,        ,  
    225       &mdash; ,  "",      
    226 , &mdash;            ,
    227     2.   
    228        ,      ( 
    229     ).</p>
    230 
    231 <p>    ,  {@link android.content.Intent}   {@link
    232 android.content.Intent#createChooser createChooser()}    {@link
    233 android.app.Activity#startActivity startActivity()}. :</p>
    234 
    235 <pre>
    236 Intent intent = new Intent(Intent.ACTION_SEND);
    237 ...
    238 
    239 // Always use string resources for UI text.
    240 // This says something like "Share this photo with"
    241 String title = getResources().getString(R.string.chooser_title);
    242 // Create intent to show chooser
    243 Intent chooser = Intent.createChooser(intent, title);
    244 
    245 // Verify the intent will resolve to at least one activity
    246 if (intent.resolveActivity(getPackageManager()) != null) {
    247     startActivity(chooser);
    248 }
    249 </pre>
    250 
    251 <p>       ,      Intent,   {@link
    252 android.content.Intent#createChooser createChooser()}      
    253  .</p>
    254 
    255 
    256 
    257