打开其他应用程序和分享
一、打开其它应用程序[以打开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:程序完整的路径 (包名+程序名).