Android之Intent意图

在这里插入图片描述在这里插入图片描述
1、为了layout界面代码重用,在styles.xml中加入自定义样式

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="MyStyle"> <!-- 我定义的按钮样式 -->
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_marginLeft">4dp</item>
    <item name="android:layout_marginStart">4dp</item>
    <item name="android:layout_marginTop">4dp</item>
    <item name="android:textColor">#FF5722</item>
    <item name="android:background">#8BC34A</item>
</style>

</resources>

2、主界面button.xml中添加按钮

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableRow>
        <Button
            style="@style/MyStyle"
            android:onClick="click_Web"
            android:text="1调web浏览器 " />
        <Button
            style="@style/MyStyle"
            android:onClick="click_Geo"
            android:text="2调地图" />
    </TableRow>

    <TableRow>
        <Button
            style="@style/MyStyle"
            android:onClick="click_DiaL"
            android:text="3调拨打电话界面" />
        <Button
            style="@style/MyStyle"
            android:onClick="click_Call"
            android:text="4直接拨打电话" />
    </TableRow>

    <TableRow>
        <!--click_Delete  click_Added-->
        <Button
            style="@style/MyStyle"
            android:onClick="uninstallClick"
            android:text="5卸载" />
        <Button
            style="@style/MyStyle"
            android:onClick="installClick"
            android:text="6安装" />
    </TableRow>

    <TableRow>
        <Button
            style="@style/MyStyle"
            android:onClick="click_SenTo"
            android:text="7调用发邮件" />
        <Button
            style="@style/MyStyle"
            android:onClick="click_Sms"
            android:text="8发短信" />
    </TableRow>
</TableLayout>

3、MainActivity.java代码中添加各按钮响应事件

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button);
    }

    public void click_Web(View v) {// 1 打开百度
        Intent intent = new Intent(); // 设置动作为 android.intent.action.VIEW
        intent.setAction("android.intent.action.VIEW"); // 设置要打开的网址
        intent.setData(Uri.parse("http://www.baidu.com"));
        startActivity(intent);
    }

    public void click_Geo(View v) {// 2 地图
        Intent intent = new Intent(); // 设置动作为 android.intent.action.VIEW
        intent.setAction("android.intent.action.VIEW"); // 设置要打开的网址
        intent.setData(Uri.parse("geo:38.899533,-77.036476"));
        startActivity(intent);
    }

    public void click_DiaL(View v) { // 3 调拨打电话界面
        Uri telUri = Uri.parse("tel:100861");
        Intent intent = new Intent(Intent.ACTION_DIAL, telUri);
        startActivity(intent);
    }

    public void click_Call(View v) {  // 4 直接拨打电话
        Uri telUri = Uri.parse("tel:100861");
        Intent intent = new Intent(Intent.ACTION_CALL, telUri);
        //向用户请求获得打电话的权限
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
            startActivity(intent);
        }
    }

    public void uninstallClick(View v){    //  5 卸载软件页面
        Uri uri = Uri.fromParts("package", "com.example.ch3_activity", null);
        Intent it = new Intent(Intent.ACTION_DELETE, uri);
        it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(it);
    }
    
    public void installClick(View v){    //   6 安装软件页面
        Intent intent=new Intent(Intent.ACTION_VIEW);
        String filePath="/sdcard/Download/app-release.apk";
        File file=new File(filePath);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        //判读版本是否在7.0以上
        if (Build.VERSION.SDK_INT >= 24) {
            Log.v(TAG,"7.0以上,正在安装apk...");
            //provider authorities
            Uri apkUri = FileProvider.getUriForFile(this, "com.example.ch3_activity.fileprovider", file);
            //Granting Temporary Permissions to a URI
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
        } else {
            Log.v(TAG,"7.0以下,正在安装apk...");
            intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
        }
        this.startActivity(intent);
    }

    public void click_SenTo(View v) { //7 调用发邮件
        Uri emailUri = Uri.parse("mailto:[email protected]");
        Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);
        startActivity(intent);
    }

    public void click_Sms(View v) {  //8 发短信
        Log.v("activity传数据测试", "点击了【button_sms】");
        String phoneNumber = "100861";
        String message = "22222";
        Intent intent2 = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + phoneNumber));
        intent2.putExtra("sms_body", message);
        startActivity(intent2);
    }
}

4、主界面的java代码标红,这是因为拨打电话,需要添加Permission权限
在这里插入图片描述
在Android Studio中添加Permission权限只能在AndroidManifest.xml中手动添加; 添加位置:在<manifest之后,<application之前。然后还要在同样的位置添加安装和卸载的权限

	<uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />

在后前添加安装的相关处理(用于隐式意图)

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.example.ch3_activity.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

在这里插入图片描述
注意
在这里插入图片描述
file_paths.xml

<?xml version ="1.0" encoding ="utf-8"?><!--  Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<resources>
    <paths>
    <external-path
        name="/download"
        path="Download"/>
    </paths>
</resources>

在模拟器里面导入安装的apk
在这里插入图片描述
在这里插入图片描述
打开模拟器->文件->下载可以看到导入的apk
在这里插入图片描述然后打开模拟器的权限:设置->应用和通知->应用信息->找到自己的应用->权限->打开
测试结果,点击按钮都可以实现
主页面
在这里插入图片描述

发布了16 篇原创文章 · 获赞 5 · 访问量 718

猜你喜欢

转载自blog.csdn.net/qq_18625571/article/details/104748859