android小知識(2)

1、Android啓動外部應用

(1)、根據包名啓動

PackageManager manager = getPackageManager();
Intent launchIntentForPackage = manager.getLaunchIntentForPackage("要打開軟件的包名");
if (launchIntentForPackage != null) {
    startActivity(launchIntentForPackage);
}

(2)、啓動應用的某個界面

Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setAction(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName(“包名”, "界面的類名");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

2、打開軟件安裝頁面

Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.setDataAndType(Uri.fromFile(new File("apk所在路徑")), "application/vnd.android.package-archive");
startActivityForResult(intent, 0);  

3、卸載軟件

Intent intent = new Intent();
intent.setAction("android.intent.action.DELETE");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("package:" + "卸載的包名"));
startActivityForResult(intent, 0);

4、打開軟件詳情頁

Intent intent = new Intent();
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.parse("package:" + "軟件包名"));
startActivity(intent);

5、分享內容

Intent intent = new Intent();
intent.setAction("android.intent.action.SEND");
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "分享的內容");
startActivity(intent);

6、動態獲取服務是否開啓的方法

public static boolean isRunningService(String className,Context context){
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningServiceInfo> runningServices = activityManager.getRunningServices(300);//300    表示正在運行的服務的上限個數,一般300足夠了
    //遍歷集合
    for (RunningServiceInfo runningServiceInfo : runningServices) {

        ComponentName service = runningServiceInfo.service;
        //正在運行的服務的全類名
        String className2 = service.getClassName();

        //正在運行的服務的全類名和傳遞過來的服務的全類名比較,相同正在運行返回true,不相同表示服務沒有運行返回false
        if (className.equals(className2)) {
            return true;
        }
    }
    return false;
}

7、獲取內存卡可用空間 ##public static long getAvailableROM(){

    //獲取內存路徑
    File path = Environment.getDataDirectory();
    //硬盤的API操作
    StatFs stat = new StatFs(path.getPath());
    long blockSize = stat.getBlockSize();//獲取每塊的大小
    long totalBlocks = stat.getBlockCount();//獲取總塊數
    long availableBlocks = stat.getAvailableBlocks();//獲取可用的塊數
    return availableBlocks*blockSize;
}

8、獲取SD卡可用空間

public static long getAvailableSD(){
    File path = Environment.getExternalStorageDirectory();
    StatFs stat = new StatFs(path.getPath());
    long blockSize = stat.getBlockSize();//每塊的大小
    long totalBlocks = stat.getBlockCount();//總塊數
    long availableBlocks = stat.getAvailableBlocks();//可用的塊數
    return availableBlocks*blockSize;
}

9、獲取剩餘內存和總內存

public static long getAvailableRam(Context context){
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

    MemoryInfo outInfo = new MemoryInfo();
    am.getMemoryInfo(outInfo);
    //空閒的內存
    return outInfo.availMem;
}

public static long getTotalRam(Context context){
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

    MemoryInfo outInfo = new MemoryInfo();
    am.getMemoryInfo(outInfo);

    //總的內存
    return outInfo.totalMem;
}

10、獲取手機屏幕高度和寬度

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(outMetrics);
width = outMetrics.widthPixels;
height = outMetrics.heightPixels;

11、判斷網絡活動狀態

public static boolean isNetworkConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
        if (mNetworkInfo != null) {
            return mNetworkInfo.isAvailable();
        }
    }
    return false;
}

這裏寫圖片描述

歡迎您掃一掃上面的微信公衆號,訂閱我的個人公衆號!
本公衆號將以推送Android各種碎片化小知識或小技巧,以及整理Android面試知識點爲主,也會不定期將開發老司機日常工作中踩過的坑,平時自學的一些知識總結出來進行分享。每天一點乾貨小知識把你的碎片時間充分利用起來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章