从外部调起应用的Activity方法大全

来源:互联网 发布:vue.js怎么格式化金额 编辑:程序博客网 时间:2024/05/02 13:28
原文:http://blog.csdn.net/wangqjpp/article/details/50866437
今天正好用到,感觉总结得很全,mark一下

从任意app,启动另外一个app的activity:
1.  Intent i = new Intent(); 
     ComponentName cn = new ComponentName("com.book.android2",  "com.book.android2.AndroidSearch"); 
     i.setComponent(cn); 
     i.setAction("android.intent.action.MAIN"); 
     startActivity(i); //or startActivityForResult(i, RESULT_OK); 
我用这种方法时,绝大部分应用可以启动,但是像RootExplorer却无法启动,出现FC对话框,因此建议使用下面这种方式:
2.   Intent it = new Intent("android.intent.action.MAIN");
it.setClassName("com.speedsoftware.rootexplorer","com.speedsoftware.rootexplorer.RootExplorer");
startActivity(it);

如果你需要启动一个你自己写的另一个app的activity,你可以在那个的menifest.xml里自定义activity的action:
<activity android:name=".MainActivity" 
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<intent-filter>
  <action android:name="com.qylk.call.main" />    <!-- 自定义的action-->
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
  <category android:name="android.intent.category.DEFAULT" />
<!--必须加上这个,否则下面无法直接使用自定的action-->
  </intent-filter>
  </activity>

其他地方启动它:Intent it = new Intent("com.qylk.call.main"); startActivity(it);

3.使用adb启动activity:
启动RootExolorer:
am start -a android.intent.action.MAIN -n com.speedsoftware.rootexplorer/.RootExplorer
启动系统设置:
am start -a android.settings.SETTINGS

(转载):android系统Action常量(其实不算全)
android intent和intent action大全 

1.从google搜索内容 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_WEB_SEARCH); 
intent.putExtra(SearchManager.QUERY,"searchString") 
startActivity(intent); 

2.浏览网页 
Uri uri = Uri.parse("http://www.google.com"); 
Intent it  = new Intent(Intent.ACTION_VIEW,uri); 
startActivity(it); 

3.显示地图 
Uri uri = Uri.parse("geo:38.899533,-77.036476"); 
Intent it = new Intent(Intent.Action_VIEW,uri); 
startActivity(it); 

4.路径规划 
Uri uri = Uri.parse("http://maps.google.com/maps?f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); 
Intent it = new Intent(Intent.ACTION_VIEW,URI); 
startActivity(it); 

5.拨打电话 
Uri uri = Uri.parse("tel:xxxxxx"); 
Intent it = new Intent(Intent.ACTION_DIAL, uri);   
startActivity(it); 
 //<uses-permission id="android.permission.CALL_PHONE" /> 


6.调用发短信的程序 
Intent it = new Intent(Intent.ACTION_VIEW);    
it.putExtra("sms_body", "The SMS text");    
it.setType("vnd.android-dir/mms-sms");    
startActivity(it); 

7.发送短信 
Uri uri = Uri.parse("smsto:0800000123");    
Intent it = new Intent(Intent.ACTION_SENDTO, uri);    
it.putExtra("sms_body", "The SMS text");    
startActivity(it); 

String body="this is sms demo"; 
Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", number, null)); 
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body); 
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true); 
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true); 
startActivity(mmsintent); 

8.发送彩信 
Uri uri = Uri.parse("content://media/external/images/media/23");    
Intent it = new Intent(Intent.ACTION_SEND);    
it.putExtra("sms_body", "some text");    
it.putExtra(Intent.EXTRA_STREAM, uri);    
it.setType("image/png");    
startActivity(it); 

StringBuilder sb = new StringBuilder(); 
sb.append("file://"); 
sb.append(fd.getAbsoluteFile()); 
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto", number, null)); 
// Below extra datas are all optional. 
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject); 
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body); 
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString()); 
intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode); 
intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent); 
startActivity(intent); 

9.发送Email 
Uri uri = Uri.parse("mailto:xxx@abc.com"); 
Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
startActivity(it); 

Intent it = new Intent(Intent.ACTION_SEND);    
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");    
it.putExtra(Intent.EXTRA_TEXT, "The email body text");    
it.setType("text/plain");   
 
startActivity(Intent.createChooser(it, "Choose Email Client")); 
Intent it=new Intent(Intent.ACTION_SEND);      
String[] tos={"me@abc.com"};      
String[] ccs={"you@abc.com"};      
it.putExtra(Intent.EXTRA_EMAIL, tos);      
it.putExtra(Intent.EXTRA_CC, ccs);      
it.putExtra(Intent.EXTRA_TEXT, "The email body text");      
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");      
it.setType("message/rfc822");      
startActivity(Intent.createChooser(it, "Choose Email Client"));    

Intent it = new Intent(Intent.ACTION_SEND);    
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");    
sendIntent.setType("audio/mp3");    
startActivity(Intent.createChooser(it, "Choose Email Client")); 

10.播放多媒体   
Intent it = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/song.mp3"); 
it.setDataAndType(uri, "audio/mp3"); 
startActivity(it); 

Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");    
Intent it = new Intent(Intent.ACTION_VIEW, uri);    
startActivity(it); 

11.卸载
Uri uri = Uri.fromParts("package", strPackageName, null);    
Intent it = new Intent(Intent.ACTION_DELETE, uri);    
startActivity(it); 

12.安装
Uri installUri = Uri.fromParts("package", "xxx", null); 
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri); 

13. 打开照相机 
    Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null); 
    this.sendBroadcast(i);
 
    long dateTaken = System.currentTimeMillis(); 
    String name = createName(dateTaken) + ".jpg"; 
    fileName = folder + name; 
    ContentValues values = new ContentValues(); 
    values.put(Images.Media.TITLE, fileName); 
    values.put("_data", fileName); 
    values.put(Images.Media.PICASA_ID, fileName); 
    values.put(Images.Media.DISPLAY_NAME, fileName); 
    values.put(Images.Media.DESCRIPTION, fileName); 
    values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName); 
    Uri photoUri = getContentResolver().insert( 
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
    Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 
    startActivityForResult(inttPhoto, 10); 

14.从gallery选取图片 
  Intent i = new Intent(); 
  i.setType("image/*"); 
  i.setAction(Intent.ACTION_GET_CONTENT); 
  startActivityForResult(i, 11); 

15. 打开录音机 
   Intent mi = new Intent(Media.RECORD_SOUND_ACTION); 
   startActivity(mi); 

16.显示应用详细列表       
Uri uri = Uri.parse("market://details?id=app_id");         
Intent it = new Intent(Intent.ACTION_VIEW, uri);         
startActivity(it);         
     


17.寻找应用      
刚才找app id未果,结果发现用package name也可以 
Uri uri = Uri.parse("market://details?id=<packagename>"); 
这个简单多了 
 
Uri uri = Uri.parse("market://search?q=pname:pkg_name");         
Intent it = new Intent(Intent.ACTION_VIEW, uri);         
startActivity(it); 
     
18.打开联系人列表            
           Intent i = new Intent(); 
           i.setAction(Intent.ACTION_GET_CONTENT); 
           i.setType("vnd.android.cursor.item/phone"); 
           startActivityForResult(i, REQUEST_TEXT); 

            Uri uri = Uri.parse("content://contacts/people"); 
            Intent it = new Intent(Intent.ACTION_PICK, uri); 
            startActivityForResult(it, REQUEST_TEXT); 

20.调用系统编辑添加联系人(高版本SDK有效): 
Intent it = new Intent(Intent.ACTION_INSERT_OR_EDIT); 
                it.setType("vnd.android.cursor.item/contact"); 
                // it.setType(Contacts.CONTENT_ITEM_TYPE); 
                it.putExtra("name", "myName"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY,  "organization"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL, "email"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone"); 
                it.putExtra( android.provider.Contacts.Intents.Insert.SECONDARY_PHONE, 
                                "mobilePhone"); 
                it.putExtra(  android.provider.Contacts.Intents.Insert.TERTIARY_PHONE, 
                                "workPhone"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title"); 
                startActivity(it); 

21.调用系统编辑添加联系人(全有效): 
Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); 
            intent.setType(People.CONTENT_ITEM_TYPE); 
            intent.putExtra(Contacts.Intents.Insert.NAME, "My Name"); 
            intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890"); 
            intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE, Contacts.PhonesColumns.TYPE_MOBILE); 
            intent.putExtra(Contacts.Intents.Insert.EMAIL, "com@com.com"); 
            intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,                    
            Contacts.ContactMethodsColumns.TYPE_WORK); 
            startActivity(intent); 



23.最基本的share 信息的intent,可以传一段text信息到各个手机上已安装程序:
     如SMS,Email,sina微波,米聊,facebook,twitter等等 
            Intent it = new Intent(Intent.ACTION_SEND);     
            it.putExtra(Intent.EXTRA_TEXT, "The email subject text"); 
            it.setType("text/plain"); 

            startActivity(Intent.createChooser(it, "Choose Email Client")); 


0 0
原创粉丝点击