安卓核心技术中级——ActionBar电话服务与内容分享

ActionBar

ActionBar的主要目的是:
1.提供一个用于识别应用程序的标示和用户的位置的专用空间
2.在不同的应用程序直接提供一致的导航和视觉体验。
3.突出Activity的关键操作(如“搜索”、“创建”、“共享”等),并在可预见的方法内给用户提供快捷的访问。

获得ActionBar的方法:ActionBar actionBar = this.getActionBar();
注意代码中的主题设置是否为去掉ActionBar,否则getActionBar()将返回null

增加删除ActionBar
ActionBar actionBar = getSupportActionBar();//获得ActionBar

actionBar.hide(); //删除ActionBar

ActionBar菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item android:id="@+id/action_setting" android:title="Settings"
        android:orderInCategory="100" app:showAsAction="never"/>
    <item android:id="@+id/exit" android:title="exit"
        android:orderInCategory="200" app:showAsAction="ifRoom|withText"/>
</menu>

ActionBar标题栏
使用分离式操作栏:
android:uiOptions=“splitActionBarWhenNarrow”
导航栏使用应用图标
android:parentActivityName=".MainActivity"
A:actionBar.setHomeButtonEnabled(true);
B:actionBar.setDisplayHomeAsUpEnabled(true);
在这里插入图片描述
搜索框

<item android:id="@+id/search" android:title="search"
        android:orderInCategory="300" app:showAsAction="ifRoom|collapseActionView"
        android:icon="@android:drawable/ic_menu_search" app:actionViewClass="android.widget.SearchView"/>
@Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.menu_main,menu);
        MenuItem searchItem = menu.findItem(R.id.search);
        SearchView searchView = (SearchView)searchItem.getActionView();
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                Toast.makeText(getApplicationContext(),query,Toast.LENGTH_SHORT).show();
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        int id = item.getItemId();

        if(id == R.id.action_setting){
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

在这里插入图片描述
分享

<item android:id="@+id/share" android:title="share" android:orderInCategory="400"
        app:showAsAction="ifRoom" android:icon="@android:drawable/ic_menu_share"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
@Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.menu_main,menu);

        MenuItem shareItem = menu.findItem(R.id.share);
        ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
        shareActionProvider.setShareIntent(getDefaultIntent());

        return true;
    }

    private Intent getDefaultIntent(){
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/*");
        return intent;
    }

在这里插入图片描述
ActionBar导航


public class MainActivity3 extends AppCompatActivity implements ActionBar.TabListener{

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

        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayShowTitleEnabled(false);

        //添加选项卡
        actionBar.addTab(actionBar.newTab().setText("新闻").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("视频").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("音乐").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("游戏").setTabListener(this));
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        Toast.makeText(this,tab.getText(),Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

    }
}

在这里插入图片描述

电话服务

在这里插入图片描述
在这里插入图片描述
电话监听

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

    }

    private void testTelephonyManager(){
        TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        tm.listen(new MyPhoneStateListner(),PhoneStateListener.LISTEN_CALL_STATE);
    }

    /***
     * 电话服务的监听器
     */
    private static class MyPhoneStateListner extends PhoneStateListener{
        @Override
        public void onCallStateChanged(int state, String phoneNumber) {
            super.onCallStateChanged(state, phoneNumber);
            switch (state){
                case TelephonyManager.CALL_STATE_RINGING:
                    System.out.println("正在响铃...");
                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    System.out.println("挂机状态");
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    System.out.println("正在接听电话...");
                    break;
            }
        }
    }

app内容共享

分享简单的文本

public void sharedSimpleContentClick(View v){
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT,"你是猪吗?");
        startActivity(intent);
    }

在这里插入图片描述
//指定选择器
startActivity(Intent.createChooser(intent,“快来抢红包吧”));
在这里插入图片描述
分享图片

public void sharedImageContentClick(View v){
        Uri uri = Uri.parse("");//图片地址
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("image/*");
        intent.putExtra(Intent.EXTRA_STREAM,uri);
//        startActivity(intent);
        //指定选择器
        startActivity(Intent.createChooser(intent,"分享图片到"));
    }
}

在这里插入图片描述
分享多个文件

public void sharedMultipleContentClick(View v){
        Uri uri1 = Uri.parse("/storage/emulated/0/DCIM/Camera/IMG_20190405_101011.jpg");
        Uri uri2 = Uri.parse("/storage/emulated/0/DCIM/Camera/IMG_20190405_101011.jpg");
        ArrayList<Uri> list = new ArrayList<>();
        list.add(uri1);
        list.add(uri2);
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND_MULTIPLE);
        intent.setType("image/*");
        intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,list);
//        startActivity(intent);
        //指定选择器
        startActivity(Intent.createChooser(intent,"分享图片到"));
    }

接收简单数据

首先在清单文件中添加以下内容
<activity android:name=".ReceiverSharedContentActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:mimeType="text/plain"/>
            </intent-filter>
        </activity>
然后创建Activity
public class ReceiverSharedContentActivity extends AppCompatActivity {

    private TextView textView_content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_receiver_shared_content);
        textView_content = (TextView)findViewById(R.id.content);

        handlerContent();
    }

    private void handlerContent(){
        Intent intent = getIntent();
        String action = intent.getAction();
        String type = intent.getType();

        if(Intent.ACTION_SEND.equals(action)){
            if("text/plain".equals(type)){
                String info = intent.getStringExtra(intent.EXTRA_TEXT);
                textView_content.setText(info);
            }
        }
    }
}

使用ShareActionProvider

<!--xml/menu.xml-->
<item android:id="shared" android:title="shared"
        android:orderInCategory="200" app:showAsAction="ifRoom"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main,menu);
        MenuItem item = menu.findItem(R.id.shared);
        ShareActionProvider sap = (ShareActionProvider) MenuItemCompat.getActionProvider(item);

        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT,"今天你吃了吗");

        sap.setShareIntent(intent);

        return true;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值