精华内容
下载资源
问答
  • Android 打开网络上pdf文件

    千次阅读 热门讨论 2016-12-29 14:01:37
    之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,开始改造...

    之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,开始改造一番。

    1.基本思路:

    • 打开网络pdf 思路整体还是来源与图片的加载。
    • android中加载网络图片的框架有很多个。如image-laoder, fresco、glide等,首先都是从内存中找图片,如果内存中没有,接着从本地找,本地没有在从网络下载。
    • android中加载pdf也是类似,首先从本地找pdf文件,如果本地存在该pdf文件,直接打开,如果本地不存在,将该pdf文件下载到本地在打开。
    • 下载文件用到了retrofit2的库,已经封装到android_pdf中了。

    2.依赖android_pdf库方法

    2.1 在项目的gradle中增加如下代码:

    compile 'com.lidong.pdf:android_pdf:1.0.1'

    2.2 一句代码就可以加载网络pdf。

      pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName);   //设置pdf文件地址

    2.3对fileFromLocalStorage(this,this,this,fileUrl,fileName)的解析

    /**

        *  加载pdf文件
         * @param onPageChangeListener
         * @param onLoadCompleteListener
         * @param onDrawListener
         * @param fileUrl
         * @param fileName
         */
        public  void  fileFromLocalStorage(
        final OnPageChangeListener onPageChangeListener,
                                           final OnLoadCompleteListener onLoadCompleteListener,
                                           final OnDrawListener onDrawListener,
                                           String fileUrl,
                                           final String fileName)
    1. OnPageChangeListener onPageChangeListener :翻页回调
    2. OnLoadCompleteListener onLoadCompleteListener:加载完成的回调
    3. OnDrawListener:页面绘制的回调
    4. String fileUrl : 文件的网络地址
    5. String fileName 文件名称

    3.使用android_pdf库方法

    3.1写一个布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.lidong.pdf.androidpdf.MainActivity">
    
        <com.lidong.pdf.PDFView
            android:id="@+id/pdfView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    </RelativeLayout>

    3.2在MainActivity中加载

    import android.graphics.Canvas;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.Toast;
    
    import com.lidong.pdf.PDFView;
    import com.lidong.pdf.api.ApiManager;
    import com.lidong.pdf.listener.OnDrawListener;
    import com.lidong.pdf.listener.OnLoadCompleteListener;
    import com.lidong.pdf.listener.OnPageChangeListener;
    import com.lidong.pdf.util.FileUtils;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import okhttp3.ResponseBody;
    import rx.android.schedulers.AndroidSchedulers;
    import rx.functions.Action1;
    import rx.schedulers.Schedulers;
    
    public class MainActivity extends AppCompatActivity implements OnPageChangeListener
            ,OnLoadCompleteListener, OnDrawListener {
        private PDFView pdfView ;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            pdfView = (PDFView) findViewById( R.id.pdfView );
            displayFromFile1("填写所要打开的pdf地址");
    
        }
        /**
         * 获取打开网络的pdf文件
         * @param fileUrl
         * @param fileName
         */
        private void displayFromFile1( String fileUrl ,String fileName) {
        showProgress();    pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName);   //设置pdf文件地址
    
        }
    
        /**
         * 翻页回调
         * @param page
         * @param pageCount
         */
        @Override
        public void onPageChanged(int page, int pageCount) {
            Toast.makeText( MainActivity.this , "page= " + page +
                    " pageCount= " + pageCount , Toast.LENGTH_SHORT).show();
        }
    
        /**
         * 加载完成回调
         * @param nbPages  总共的页数
         */
        @Override
        public void loadComplete(int nbPages) {
            Toast.makeText( MainActivity.this ,  "加载完成" + nbPages  , Toast.LENGTH_SHORT).show();
            hideProgress();
        }
    
        @Override
        public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
            // Toast.makeText( MainActivity.this ,  "pageWidth= " + pageWidth + "
            // pageHeight= " + pageHeight + " displayedPage="  + displayedPage , Toast.LENGTH_SHORT).show();
        }
      /**
         * 显示对话框
         */
        private void showProgress(){
            LoadingUIHelper.showDialogForLoading(this,"报告加载中,请等待。。。",false);
        }
    
        /**
         * 关闭等待框
         */
        private void hideProgress(){
            LoadingUIHelper.hideDialogForLoading();
        }

    代码地址


    效果实现:
    这里写图片描述

    代码已经奉上,请大家伙给点建议。一起交流(1561281670)

    展开全文
  • Android打开通讯录并获取数据

    千次阅读 2018-02-07 20:00:24
    Android打开通讯录并获取数据一、AndroidManifest中权限配置<!-- 允许程序读取通讯录权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/>二、 配置动态权限 //**版本判断。当手机系统...

    Android打开通讯录并获取数据


    一、AndroidManifest中权限配置

    <!-- 允许程序读取通讯录权限 -->
        <uses-permission android:name="android.permission.READ_CONTACTS"/>

    二、 配置动态权限

         //**版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取**
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                 //ContextCompat.checkSelfPermission() 方法 指定context和某个权限 返回PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED
                 if (ContextCompat.checkSelfPermission(NewAdd4Activity.this, android.Manifest.permission.READ_CONTACTS)
                         != PackageManager.PERMISSION_GRANTED) {   
                         // 若不为GRANTED(即为DENIED)则要申请权限了
                         // 申请权限 第一个为context 第二个可以指定多个请求的权限 第三个参数为请求码
                     ActivityCompat.requestPermissions(NewAdd4Activity.this,        
                             new String[]{android.Manifest.permission.READ_CONTACTS},
                             GlobalVariable.READ_REQUEST_CONTACTS);
                 } else { 
                 //权限已经被授予,在这里直接写要执行的相应方法即可
                     intentToContact();
                 }
             }else { 
             // 低于6.0的手机直接访问
                 intentToContact();
             }

    三、 权限回调处理

     // 用户权限 申请 的回调方法
        public void onRequestPermissionsResult(int requestCode,
                                               @NonNull String permissions[], @NonNull int[] grantResults) {
            if(requestCode== GlobalVariable.READ_REQUEST_CONTACTS) {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    intentToContact();
                } else {
                    Toast.makeText(NewAdd4Activity.this,"授权被禁止",Toast.LENGTH_SHORT).show();
                }
            }
            super.onRequestPermissionsResult(requestCode, permissions,
                    grantResults);
        }

    四、打开通讯录

    private void intentToContact() {
            // 跳转到联系人界面
            Intent intent = new Intent();
            intent.setAction("android.intent.action.PICK");
            intent.addCategory("android.intent.category.DEFAULT");
            intent.setType("vnd.android.cursor.dir/phone_v2");
            startActivityForResult(intent, 0x30);
        }

    五、 获取回调 处理数据

     @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode==0x30) {
                if (data != null) {
                    Uri uri = data.getData();
                    String phoneNum = null;
                    String contactName = null;
                    // 创建内容解析者
                    ContentResolver contentResolver = getContentResolver();
                    Cursor cursor = null;
                    if (uri != null) {
                        cursor = contentResolver.query(uri,
                                new String[]{"display_name","data1"}, null, null, null);
                    }
                    while (cursor.moveToNext()) {
                        contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                        phoneNum = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    }
                    cursor.close();
                    //  把电话号码中的  -  符号 替换成空格
                    if (phoneNum != null) {
                        phoneNum = phoneNum.replaceAll("-", " ");
                        // 空格去掉  为什么不直接-替换成"" 因为测试的时候发现还是会有空格 只能这么处理
                        phoneNum= phoneNum.replaceAll(" ", "");
                    }
    
                    editCustomerName.setText(contactName);
                    editContact.setText(phoneNum);
                }
            }
         }
    

    这里获取的是用户点击了 某个通讯录中的某个人 返回的电话号码 和 姓名


    展开全文
  • Android 打开关闭手机扬声器

    千次阅读 2017-03-03 15:50:13
    Android打开关闭手机扬声器1.添加权限<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />2.获取手机音频管理者对象 private AudioManager audioManager; audioManager = (...

    飞哥语录:数据类型是对内存的抽象。

    1.添加权限

    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

    2.获取手机音频管理者对象

    	private AudioManager audioManager;   
    	audioManager = ((AudioManager) getSystemService(AUDIO_SERVICE));
    

    3.设置几个属性

    private boolean isSpeakerOpen = true;//默认开启手机扬声器  
    private static int currVolume = 0;//当前音量
    

    4.设置一个按钮的点击事件来打开关闭手机扬声器

    	button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    				isSpeakerOpen = !isSpeakerOpen;
                    if (isSpeakerOpen) {
                        OpenSpeaker();
                    } else {
                        CloseSpeaker();
                    }
                }
            });
    

    5.打开扬声器

    public void OpenSpeaker() {
            try {
                audioManager.setMode(AudioManager.ROUTE_SPEAKER);
                // 获取当前通话音量
                currVolume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
    
                if (!audioManager.isSpeakerphoneOn()) {
                    audioManager.setSpeakerphoneOn(true);
    
                    audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
                            audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL),
                            AudioManager.STREAM_VOICE_CALL);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            Toast.makeText(MainActivity.this, "打开扬声器", Toast.LENGTH_SHORT).show();
        }
    

    6.关闭扬声器

    public void CloseSpeaker() {
    
            try {
                if (audioManager != null) {
                    if (audioManager.isSpeakerphoneOn()) {
                        audioManager.setSpeakerphoneOn(false);
                        audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, currVolume,AudioManager.STREAM_VOICE_CALL);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            Toast.makeText(MainActivity.this, "关闭扬声器", Toast.LENGTH_SHORT).show();
        }
    

    好了,今天的分享就到这里,如果有什么问题,可以在下方留言与我交流。

    展开全文
  • Android 打开本地pdf文件

    万次阅读 热门讨论 2016-11-02 15:18:51
    Android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用WebView加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家 android-pdfview。下面主要说一下该库的使用方法。1. 该库的...

    Android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用WebView加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家
    android-pdfview。下面主要说一下该库的使用方法。

    1. 该库的下载地址

    https://github.com/JoanZapata/android-pdfview

    2. android-pdfview的简单介绍

    PDFView是这个库中最核心的类,用于加载pdf文件,PDFView是的实现是继承于SurfaceView来实现的。主要用到了建造者模式来设置相关的属性。

    • fromFile(file) //设置pdf文件地址
    • fromAsset(assetFileName) //设置pdf文件地址
    • defaultPage(1) //设置默认显示第1页
    • onPageChange(this) //设置翻页监听
    • onLoad(this) //设置加载监听
    • onDraw(this) //绘图监听
    • showMinimap(false) //pdf放大的时候,是否在屏幕的右上角生成小地图
    • swipeVertical( false ) //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
    • enableSwipe(true) //是否允许翻页,默认是允许翻页
    • pages() //把2 , 3 , 4 , 5 过滤掉
    • load();

    3. 在项目的build.gradle添加这个依赖

    compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'
    

    4.写一个布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.lidong.pdf.androidpdf.MainActivity">
    
        <com.joanzapata.pdfview.PDFView
            android:id="@+id/pdfView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    </RelativeLayout>
    

    5.Activity的实现

    package com.lidong.pdf.androidpdf;
    
    import android.graphics.Canvas;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.ViewTreeObserver;
    import android.widget.Toast;
    
    import com.joanzapata.pdfview.PDFView;
    import com.joanzapata.pdfview.listener.OnDrawListener;
    import com.joanzapata.pdfview.listener.OnLoadCompleteListener;
    import com.joanzapata.pdfview.listener.OnPageChangeListener;
    
    import java.io.File;
    
    public class MainActivity extends AppCompatActivity implements OnPageChangeListener
            ,OnLoadCompleteListener, OnDrawListener {
        private PDFView pdfView ;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            pdfView = (PDFView) findViewById( R.id.pdfView );
    
            //从assets目录读取pdf
            displayFromAssets("0010000022464002F__李东.pdf");
    
            //从文件中读取pdf
    //        displayFromFile( new File( "fileName"));
    
        }
    
        private void displayFromAssets(String assetFileName ) {
            pdfView.fromAsset(assetFileName)   //设置pdf文件地址
                    .defaultPage(1)         //设置默认显示第1页
                    .onPageChange(this)     //设置翻页监听
                    .onLoad(this)           //设置加载监听
                    .onDraw(this)            //绘图监听
                    .showMinimap(false)     //pdf放大的时候,是否在屏幕的右上角生成小地图
                    .swipeVertical( false )  //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                    .enableSwipe(true)   //是否允许翻页,默认是允许翻页
    //                 .pages()  //把 5 过滤掉
                    .load();
        }
    
        private void displayFromFile( File file ) {
            pdfView.fromFile(file)   //设置pdf文件地址
                    .defaultPage(6)         //设置默认显示第1页
                    .onPageChange(this)     //设置翻页监听
                    .onLoad(this)           //设置加载监听
                    .onDraw(this)            //绘图监听
                    .showMinimap(false)     //pdf放大的时候,是否在屏幕的右上角生成小地图
                    .swipeVertical( false )  //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                    .enableSwipe(true)   //是否允许翻页,默认是允许翻
                    // .pages( 2 ,5  )  //把2  5 过滤掉
                    .load();
        }
    
        /**
         * 翻页回调
         * @param page
         * @param pageCount
         */
        @Override
        public void onPageChanged(int page, int pageCount) {
            Toast.makeText( MainActivity.this , "page= " + page +
                    " pageCount= " + pageCount , Toast.LENGTH_SHORT).show();
        }
    
        /**
         * 加载完成回调
         * @param nbPages  总共的页数
         */
        @Override
        public void loadComplete(int nbPages) {
            Toast.makeText( MainActivity.this ,  "加载完成" + nbPages  , Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
            // Toast.makeText( MainActivity.this ,  "pageWidth= " + pageWidth + "
            // pageHeight= " + pageHeight + " displayedPage="  + displayedPage , Toast.LENGTH_SHORT).show();
        }
    }
    

    效果实现:
    这里写图片描述
    这里写图片描述

    今天主要是简单使用一下,后面准备将该库进行拓展,是打开网络的pdf文件的功能。

    展开全文
  • Android 打开其他应用app的两种方式

    千次阅读 2016-11-04 16:27:53
    Android 打开其他应用app的两种方式
  • 具有基本功能的Android 打开文件、保存文件的对话框。
  • android打开前置摄像头和后置摄像头

    万次阅读 2012-09-14 21:49:21
    android打开前置摄像头和后置摄像头 前言: 我的android设备是原道N70双擎pad。这个平板电脑没有后置摄像头,只有前置摄像头,当我安装一些程序的时候,会出现“xxxx.apk已经终止”的错误,然后程序就会退出。...
  • 解决Android 6.0以上的高版本跳转相机闪退问题,以及相机返回图片不显示问题。 AndroidManifest.xml 中添加权限 <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=...
  • Android开根号运算

    千次阅读 2019-06-26 16:04:11
    根号运算不记得?这里记录一下方便大家查看 Math.sqrt(double aaa);
  • Android 打开URL

    万次阅读 2012-03-21 18:29:06
    打开链接 Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));  it.setClassName("com.android.browser", "com.android.browser.BrowserActivity");  getContext().s
  • android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用webview加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家  android-pdfview。下面主要说一下该库的使用方法。  ...
  • android打开手机相册获取真正的图片路径

    万次阅读 多人点赞 2018-01-15 11:11:31
    根据打开相机返回的Uri uri = data.getData();获取该相片的真正SD卡路径! 权限 uses-permission android:name="android.permission.READ_... uses-permission android:name="android.permission.WRITE_EXTERNAL
  • Android 打开网络设置界面

    千次阅读 2016-06-08 10:49:32
    由于Android的SDK版本不同所以里面的API和设置方式也是有少量变化的,尤其是在Android 3.0 及后面的版本,UI和显示方式也发生了变化,现在就以打开网络设置为例,同大家分享一下,效果如下: ... * 判断网络连接是否已
  • Android打开界面时判断是否登录,未登录跳转登录界面,登录完成后直接跳转要打开的界面。实现思路是未登录的话创建一个跳转到登录界面的ComponentName,替换掉Intent中原来的ComponentName,把要跳转的目标className...
  • Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到它不在弹出让我选择哪个...
  • Android 打开消息通知权限

    万次阅读 2018-11-05 14:35:14
    转载自https://blog.csdn.net/rocrocflying/article/details/78333256?locationNum=8&amp;fps=1 ... 没有取得作者授权,如有不便,请联系我删除。 很多人或系统会关闭消息通知权限来组织手机天天就...
  • 我想直接调用手机系统的前置摄像头,不用自定义相机... cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", 1);//这里试过值0,1,2 三星,华为均无效 startActivity(cameraIntent); ``` 请大神指点迷津。
  • Android 打开系统蓝牙设置

    千次阅读 2016-01-06 09:31:07
    打开蓝牙设置,报错信息java.lang.SecurityException: Permission Denial: starting Intent { act=android.settings.BLUETOOTH_SETTINGS flg=0x10000000 cmp=com.android.settings/.Settings$...
  • Android打开或者关闭GPS

    万次阅读 2016-12-09 23:14:53
    打开和关闭gps //打开或者关闭gps public void openGPS(boolean open) { if (Build.VERSION.SDK_INT &lt;19) { Secure.setLocationProviderEnabled(context.getContentResolver(), ...
  • Android打开/关闭数据流量

    万次阅读 2015-07-08 10:32:13
    由于android并未公开这个类,因此如果要打开/关闭数据,需要通过反射 MobileDataSwitcher.java import java.lang.reflect.Method; import android.content.Context; import android.net.ConnectivityManager; ...
  • Android打开自启动设置页面

    千次阅读 2017-09-19 11:13:39
    由于Linux的开源,市面上出现了很多定制的Android系统,这写系统有的将Android原生系统改的面目全非,很多方法不能同时在所有机型上适用,这是问题的一大难点。 项目中遇见了一个问题,我用JPush SDK推送消息,...
  • android 打开微信主界面

    千次阅读 2016-07-21 00:22:39
    怎么在自己的app中打开微信
  • Android打开系统设置界面

    千次阅读 2012-06-28 10:06:08
    Android软件时,常常需要打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息,这时我们就可以使用以下语句来实现:(如打开“无线和网络设置”界面)  Intent intent = new Intent("/");  ...
  • Android开关机源码分析

    千次阅读 2012-10-31 16:03:49
    2.1Android关机流程  Android关机流程的介绍网上很多,现在摘抄一段如下: 点击(此处)折叠或打开 关机动作从按键触发中断,linux kernel层给android framework层返回按键事件进入 framework层,再从 ...
  • android 打开微信扫一扫

    千次阅读 2017-08-21 09:47:39
    由于微信的更新导致不能直接通过scheme打开微信扫一扫界面,但是现在仍然有两种方式可以直接打开微信扫一扫界面: 1: public static void toWeChatScanDirect(Context context) { try { Intent intent = new ...
  • Android打开/关闭wifi命令

    万次阅读 2017-06-19 10:31:28
    1.提升权限 # adb root; adb remount 2.关闭wifi # adb shell svc wifi disable 3.打开wifi # adb shell svc wifi enable
  • Android打开系统文件管理器的坑

    千次阅读 2017-09-18 09:50:15
    代码: Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); // 如果少了这句,有些机型上面不能正常打开文件管理器,比如金立 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,225
精华内容 31,690
关键字:

android开