(1)android获取网络时间:

    import java.io.IOException;    import java.net.URL;    import java.net.URLConnection;    import java.util.Date;        @Override    protected void onCreate(final Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.v(TAG, "onCreate:");        setContentView(com.example.fcqing.myapplication.R.layout.activity_main);        //*****        new Thread(new Runnable() {            @Override            public void run() {                try {                    URL mURL = new URL("http://www.baidu.com");                    URLConnection mConnection = mURL.openConnection();                    mConnection.connect();                    long mDate = mConnection.getDate();                    Date mDate1 = new Date(mDate);                    yearNet = mDate1.getYear() + 1900; //int类型                    monthNet = mDate1.getMonth() + 1;  //int类型                }catch (IOException mE) {                    mE.printStackTrace();                }            }        }).start();}

注:安卓设备预设时间是以1900年为初始值的,所以得到的年份year值为从1900年后多少年,如果year=119,表示今年是1900+119=2019年;月份month值为0~11,需要+1;day为1 - 31。

(2)Android获取文件路径方法

Environment.getDataDirectory() = /dataEnvironment.getDownloadCacheDirectory()= /cacheEnvironment.getExternalStorageDirectory() = /mnt/sdcardEnvironment.getExternalStoragePublicDirectory(“test”)= /mnt/sdcard/testEnvironment.getRootDirectory() = /systemgetPackageCodePath() = /data/app/com.my.app-1.apkgetPackageResourcePath() = /data/app/com.my.app-1.apkgetCacheDir() = /data/data/com.my.app/cachegetDatabasePath(“test”)= /data/data/com.my.app/databases/testgetDir(“test”, Context.MODE_PRIVATE)= /data/data/com.my.app/app_testgetExternalCacheDir()= /mnt/sdcard/Android/data/com.my.app/cachegetExternalFilesDir(“test”)= /mnt/sdcard/Android/data/com.my.app/files/testgetExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/filesgetFilesDir()= /data/data/com.my.app/files

实例方法:

//获取SD路径public void getSDPath(){     File sdDir = null;     File sdDir1 = null;    File sdDir2 = null;    boolean sdCardExist = Environment.getExternalStorageState()         .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在     if (sdCardExist) {         sdDir = Environment.getExternalStorageDirectory();//获取跟目录         sdDir1 = Environment.getDataDirectory();        sdDir2 =Environment.getRootDirectory();    }     System.out.println("getExternalStorageDirectory(): "+sdDir.toString());     System.out.println("getDataDirectory(): "+sdDir1.toString());     System.out.println("getRootDirectory(): "+sdDir2.toString()); }   //判断一个路径下的文件(文件夹)是否存在,如果不存在则新建public class IsExist {    public static void main(String[] args) {        isExist(" /data/app/1.jpg");    }     /**    * @param path 文件夹路径    */    public static void isExist(String path) {        File file = new File(path);        //判断文件夹是否存在,如果不存在则创建文件夹        if (!file.exists()) {            file.mkdir();        }    }} //在SD卡上创建一个文件夹public class makeFile extends Activity {     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         File sd=Environment.getExternalStorageDirectory();         String path=sd.getPath()+"/notes";         File file=new File(path);         if(!file.exists())             file.mkdir();  }

(3)android studio 修改包名:

将左侧目录切换成“android”,然后在“app--java--当前包名 ”位置,按快捷键 shift + F6 ,选择Rename package;

填好包名后点击Refactor;然后选择左下方的Do Refactor,系统会用一段时间自动修改包名;最后需要我们手动修改app中build.gradle 的applicationId项,改成新修改的包名即可。

(4)android studio 发布release版本

https://blog.csdn.net/to_perfect/article/details/69048419(亲测,搬运过来)

一、前提
发布release 版本,首先需要保证当前的app没有bug、可以正式发布。
二.、准备jks
.jks即密钥库,是一种包含一个或多个私钥的二进制文件,只要记住,他就相当于人的指纹一样重要就行了。切记!必须在应用的整个生命周期内使用相同的证书,以便用户能够以应用更新的形式安装新版本。我们来看看如何在as中创建密钥库。
首先,在菜单栏中,点击 Build > Generate Signed APK。出现如下对话框


点击create new....如果有了就直接choose 好了。
点击后会让你创建一个密钥库,如下图:


Key store path:选择创建密钥库的位置 + 密钥库名字+jks。

Password:为您的密钥库创建并确认一个安全的密码。

Alias:为您的密钥输入一个标识名。

Password:为您的密钥创建并确认一个安全的密码。此密码应当与您为密钥库选择的密码不同

Validity (years):以年为单位设置密钥的有效时长。密钥的有效期应至少为 25 年,以便您可以在应用的整个生命期内使用相同的密钥签署应用更新。默认为25

Certificate:为证书输入一些关于您自己的信息。此信息不会显示在应用中,但会作为 APK 的一部分包含在您的证书中。

一定要把两个密码记住,为了安全起见,两个密码最好不一样。填完,击ok即可,这个时候会在相应的文件下生成demo.jks,紧接着会回到下面的界面,点击next-->finish


三、配置构建流程以自动签署您的 APK
1.在 Project 窗口中,右键点击您的应用并点击 Open Module Settings。
2.在 Project Structure 窗口左面板中的 Modules 下,点击您想要签署的模块。
3.点击 Signing 标签,然后点击 ‘+’ 。
4.选择您的密钥库文件,为此签署配置输入一个名称(随意起一个),然后输入所需的信息。

如图,找到上面创建的密钥库,并输入密钥库的密码,以及密钥密码


然后,点击 Build Types 标签,点击 release 构建,在 Signing Config 下,选择您刚创建的签署配置。点击OK


现在,在您每一次使用 Android Studio 构建发布构建时,IDE 都会使用您指定的签署配置自动签署 APK。
四、发布release版本
顺利走完上面的步骤,那么离发布release版本就差一键了,首先,修改发布版本,在as的左下角,修改build variant为release,接着,run即可,这个时候在项目下面的app\build\outputs\apk下就可以看到release版本的apk了,good lucky~~

五、签署注意事项
在应用的预期生命周期内,您应使用相同证书签署所有 APK。这么做的原因有多个:
应用升级:
当系统安装应用的更新时,它会比较新版本和现有版本中的证书。如果证书匹配,则系统允许更新。如果您使用不同的证书签署新版本,则必须为应用分配另一个软件包名称 - 在此情况下,用户将新版本作为全新应用安装。
应用模块化:
Android 允许通过相同证书签署的多个 APK 在同一个进程中运行(如果应用请求这样),以便系统将它们视为单个应用。通过此方式,您可以在模块中部署您的应用,且用户可以独立更新每个模块。
通过权限共享代码/数据:
Android 提供基于签名的权限执行,以便应用可以将功能展示给使用指定证书签署的另一应用。通过使用同一个证书签署多个 APK 并使用基于签名的权限检查功能,您的应用可采用安全的方式共享代码和数据。
 

更多相关文章

  1. Android(安卓)之应用程序重启
  2. Android(安卓)应用Crash 后自动重启
  3. Android文件列表RecyclerView中点击视频播放
  4. android oreo_如何限制Android(安卓)Oreo中应用程序的后台活动以
  5. 对Android应用进行单元测试
  6. android获取系统环境变量
  7. Android屏蔽返回键
  8. Android(安卓)RecyclerView
  9. android带图片的AlertDialog和文件管理器(代码)

随机推荐

  1. android 开发 onRestart()未调用
  2. 屏幕旋转Activity的生命周期变化
  3. 如何构建背景渐变的页面
  4. android 设置闹钟显示的状态栏上
  5. Android系统源码导入到eclipse
  6. Android中传感器的一些功能
  7. 安装APK文件的错误码定义
  8. android HTTPS 访问 安全认证
  9. android如何在代码中设置margin
  10. 浅谈Android(安卓)Broadcast