Intent调用常见系统组件方法:
//打开设置了 <data android:host="my.com" android:scheme="m" />的应用
Intent intent = new Intent();
intent.setData(Uri.parse("m://my.com"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//打开发送短信界面
Uri uri = Uri.parse("sms:10086?body=czmm");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
//卸载应用
Uri uri = Uri.fromParts("package","com.eg.android.AlipayGphone",null);
Intent intent = new Intent(Intent.ACTION_DELETE,uri);
startActivity(intent);
//安装SD卡中apk文件
if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},101);
}else {
Intent intent = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = FileProvider.getUriForFile(MainActivity.this, "com.example.administrator.performance.fileprovider", new File("/sdcard/123.apk"));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
intent.setClipData(ClipData.newRawUri(MediaStore.EXTRA_OUTPUT, uri));
} else {
intent.setDataAndType(Uri.fromFile(new File("/sdcard/123.apk")), "application/vnd.android.package-archive");
}
startActivity(intent);
}
//在应用市场找应用,如果手机上安装了多个应用商店,会先让你选择商店,然后再搜索应用
Uri uri = Uri.parse("market://search?q=愤怒的小鸟");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
//发送短信,与上面效果一样
int schemaIndex = url.indexOf("sms:");
int wenIndex = url.indexOf("?");
int bodyIndex = url.indexOf("body");
String msg_telString=url.substring(schemaIndex+4,wenIndex);
String msg_textString=url.substring(bodyIndex+5);
Uri uriMsg=Uri.parse("smsto:"+msg_telString);
Intent intentMsg=new Intent();
intentMsg.setAction(Intent.ACTION_SENDTO);
intentMsg.putExtra("sms_body", msg_textString);
intentMsg.setType("vnd.android-dir/mms-sms"); //短信的MIME类型
intentMsg.setData(uriMsg);
startActivity(intentMsg);
//直接拨打电话
Uri uriTel=Uri.parse("tel:10086");
Intent intentTel=new Intent();
intentTel.setAction(Intent.ACTION_CALL);
intentTel.setData(uriTel);
if(url.startsWith("taobao:")){
if(ApkUtils.isAPPInstalled(getApplicationContext(),"com.taobao.taobao")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(),"请先安装淘宝",Toast.LENGTH_LONG).show();
}
}else if(url.startsWith("alipays:")){
if(ApkUtils.isAPPInstalled(getApplicationContext(),"com.eg.android.AlipayGphone")){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(),"请先安装支付宝",Toast.LENGTH_LONG).show();
}
}else if(url.startsWith("tmall:")){
if(ApkUtils.isAPPInstalled(getApplicationContext(),"com.tmall.wireless")){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(),"请先安装天猫",Toast.LENGTH_LONG).show();
}
}
public static boolean isAPPInstalled(Context context, String packageName) {
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
return packageInfo != null;
}
//打开设置了 <data android:host="my.com" android:scheme="m" />的应用
Intent intent = new Intent();
intent.setData(Uri.parse("m://my.com"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//打开发送短信界面
Uri uri = Uri.parse("sms:10086?body=czmm");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
//卸载应用
Uri uri = Uri.fromParts("package","com.eg.android.AlipayGphone",null);
Intent intent = new Intent(Intent.ACTION_DELETE,uri);
startActivity(intent);
//安装SD卡中apk文件
if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},101);
}else {
Intent intent = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = FileProvider.getUriForFile(MainActivity.this, "com.example.administrator.performance.fileprovider", new File("/sdcard/123.apk"));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
intent.setClipData(ClipData.newRawUri(MediaStore.EXTRA_OUTPUT, uri));
} else {
intent.setDataAndType(Uri.fromFile(new File("/sdcard/123.apk")), "application/vnd.android.package-archive");
}
startActivity(intent);
}
//在应用市场找应用,如果手机上安装了多个应用商店,会先让你选择商店,然后再搜索应用
Uri uri = Uri.parse("market://search?q=愤怒的小鸟");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
//发送短信,与上面效果一样
int schemaIndex = url.indexOf("sms:");
int wenIndex = url.indexOf("?");
int bodyIndex = url.indexOf("body");
String msg_telString=url.substring(schemaIndex+4,wenIndex);
String msg_textString=url.substring(bodyIndex+5);
Uri uriMsg=Uri.parse("smsto:"+msg_telString);
Intent intentMsg=new Intent();
intentMsg.setAction(Intent.ACTION_SENDTO);
intentMsg.putExtra("sms_body", msg_textString);
intentMsg.setType("vnd.android-dir/mms-sms"); //短信的MIME类型
intentMsg.setData(uriMsg);
startActivity(intentMsg);
//直接拨打电话
Uri uriTel=Uri.parse("tel:10086");
Intent intentTel=new Intent();
intentTel.setAction(Intent.ACTION_CALL);
intentTel.setData(uriTel);
startActivity(intentTel);
//打开拨号盘界面
Uri uriTel=Uri.parse("tel:10086");
Intent intentTel=new Intent(Intent.ACTION_VIEW,uriTel);
startActivity(intentTel);
//打开淘宝,支付宝,天猫
if(url.startsWith("taobao:")){
if(ApkUtils.isAPPInstalled(getApplicationContext(),"com.taobao.taobao")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(),"请先安装淘宝",Toast.LENGTH_LONG).show();
}
}else if(url.startsWith("alipays:")){
if(ApkUtils.isAPPInstalled(getApplicationContext(),"com.eg.android.AlipayGphone")){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(),"请先安装支付宝",Toast.LENGTH_LONG).show();
}
}else if(url.startsWith("tmall:")){
if(ApkUtils.isAPPInstalled(getApplicationContext(),"com.tmall.wireless")){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(),"请先安装天猫",Toast.LENGTH_LONG).show();
}
}
public static boolean isAPPInstalled(Context context, String packageName) {
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
return packageInfo != null;
}