打开其他应用程序和分享

一、打开其它应用程序[以打开QQ为例]

1 Intent intent = new Intent();
2         ComponentName cmp = new ComponentName("com.tencent.mobileqq","com.tencent.mobileqq.activity.SplashActivity");
3         intent.setAction(Intent.ACTION_MAIN);
4         intent.addCategory(Intent.CATEGORY_LAUNCHER);
5         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
6         intent.setComponent(cmp);
7         startActivity(intent);

 

二、分享

1 Intent intent=new Intent(Intent.ACTION_SEND);   
2 
3         intent.setType("text/plain");   
4 
5         intent.putExtra(Intent.EXTRA_SUBJECT,"分享");   
6         intent.putExtra(Intent.EXTRA_TEXT, "hello,weibo!");    
7         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
8         startActivity(Intent.createChooser(intent, "share"));

 

三、最后附上获取其他应用的启动activity

1 Intent intent = new Intent(Intent.ACTION_MAIN, null);
2             intent.addCategory(Intent.CATEGORY_LAUNCHER);
3 
4             List<ResolveInfo> list = MainActivity.this.getPackageManager()
5                     .queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);
6             
7             for(int i=0;i<list.size();i++){
8                 System.out.println(list.get(i).activityInfo.name+"----");
9             }

 四、performClick 是使用代码主动去调用控件的点击事件(模拟人手去触摸控件)

btn.setOnClickListener(listener);

btn.performClick();//这句话要写在前一句代码的后面,否则会没有意义。

 

五、判断指定App是否安装

 1  private boolean isAppInstalled(String uri) {//uri代表包名
 2         PackageManager pm = context.getPackageManager();
 3         boolean flag = false;
 4         try {
 5             pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
 6             flag = true;
 7         } catch (PackageManager.NameNotFoundException e) {
 8             e.printStackTrace();
 9             flag = false;
10         }
11         return flag;
12     }

六、拷贝assets下的文件【apk】到手机的sdcard

 1 public boolean copyApkFromAssets(Context context, String fileName, String path) {
 2         boolean copyIsFinish = false;
 3         try {
 4             InputStream is = context.getAssets().open(fileName);
 5             File file = new File(path);
 6             file.createNewFile();
 7             FileOutputStream fos = new FileOutputStream(file);
 8             byte[] temp = new byte[1024];
 9             int i = 0;
10             while ((i = is.read(temp)) > 0) {
11                 fos.write(temp, 0, i);
12             }
13             fos.close();
14             is.close();
15             copyIsFinish = true;
16         } catch (IOException e) {
17             e.printStackTrace();
18         }
19         return copyIsFinish;
20     }

调用:

1 if(copyApkFromAssets(MyActivity.this, "abc.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/abc.apk")){
2                        Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
3                        intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/abc.apk"), "application/vnd.android.package-archive");
4                        context.startActivity(intent);
5                    }

七、安卓使用代码进行apk的安装和卸载

安装:
String str = "/CanavaCancel.apk";
String fileName = Environment.getExternalStorageDirectory() + str;
Intent intent = new Intent(Intent.ACTION_VIEW);
 intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);
卸载:
Uri packageURI = Uri.parse("package:com.demo.CanavaCancel");   
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);   
startActivity(uninstallIntent);
Environment拥有一些可以获取环境变量的方法 
package:com.demo.CanavaCancel 这个形式是 package:程序完整的路径 (包名+程序名).

 

posted @ 2014-08-06 10:12  末日那道伤  阅读(359)  评论(0)    收藏  举报