国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android如何在App中啟動系統鬧鐘

2019-10-22 18:16:19
字體:
來源:轉載
供稿:網友

由于不同Android手機廠商提供的系統鬧鐘包名都不一致,所以只能通過過濾當前手機所有的應用,以確定鬧鐘應用的包名,進而啟動它。

這里采用的過濾規則是:系統應用 && 應用的PackageName包含"widget" 和 "clock"

1、布局文件  activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:paddingBottom="@dimen/activity_vertical_margin"   android:paddingLeft="@dimen/activity_horizontal_margin"   android:paddingRight="@dimen/activity_horizontal_margin"   android:paddingTop="@dimen/activity_vertical_margin"   tools:context=".MainActivity">    <Button     android:id="@+id/start_system_clock_bt"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="啟動系統鬧鐘" />  </RelativeLayout> 

2、MainActivity.java

package com.demo.cxc.systemclocksample;  import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast;  import java.util.ArrayList; import java.util.List;  public class MainActivity extends AppCompatActivity {   private Button startSystemClockButton = null;     private List<PackageInfo> allPackageInfos;//系統安裝所有軟件   private List<PackageInfo> clockPackageInfos;//系統時鐘軟件    private static final int HANDLE_MESSAGE_KEY = 1001;   private Handler myHandler = new Handler() {     @Override     public void handleMessage(Message msg) {       super.handleMessage(msg);       if (msg != null) {         switch (msg.what) {           case HANDLE_MESSAGE_KEY:             Toast.makeText(getApplicationContext(), "--app scan over--", Toast.LENGTH_SHORT).show();             Log.d("CXC", "--app scan over--");             break;            default:             break;          }        }      }   };    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     initViews();     initData();      //begin scan installed applications;     //// TODO: 16/1/15     new Thread(new ScanInstalledAppsRunnable()).start();   }    private void initViews() {     startSystemClockButton = (Button) findViewById(R.id.start_system_clock_bt);     startSystemClockButton.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {         //// TODO: 16/1/15         startSystemClock();       }     });   }    private void initData() {     clockPackageInfos = new ArrayList<PackageInfo>();   }     class ScanInstalledAppsRunnable implements Runnable {     @Override     public void run() {       allPackageInfos = getPackageManager()           .getInstalledPackages(0);        if (allPackageInfos == null || allPackageInfos.size() == 0) {         //// TODO: 16/1/15 todo nothing         return;       }        if (clockPackageInfos == null) {         clockPackageInfos = new ArrayList<PackageInfo>();       }        PackageInfo tempPackageInfo = null;       for (int i = 0; i < allPackageInfos.size(); i++) {         tempPackageInfo = allPackageInfos.get(i);         if (tempPackageInfo != null) {            if (isSystemApplication(tempPackageInfo.applicationInfo) &&               isClockApplication(tempPackageInfo.packageName)) {             clockPackageInfos.add(tempPackageInfo);           }          }       }         Message message = myHandler.obtainMessage();       message.what = MainActivity.HANDLE_MESSAGE_KEY;       myHandler.sendMessage(message);     }   }     private boolean isSystemApplication(ApplicationInfo applicationInfo) {     boolean isSystemApp = false;     if (applicationInfo != null) {       if ((applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0           || (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {         isSystemApp = true;        }     }     return isSystemApp;   }     private boolean isClockApplication(String packageName) {     boolean isClockApp = false;     if (packageName != null && packageName.contains("clock") && !packageName.contains("widget")) {       isClockApp = true;     }     return isClockApp;   }    private void startSystemClock() {     if (clockPackageInfos == null || clockPackageInfos.size() == 0) {       Toast.makeText(getApplicationContext(), "--啟動系統鬧鐘失敗1--", Toast.LENGTH_SHORT).show();       return;     }      Log.d("CXC", "---clock package size :" + clockPackageInfos.size());     Log.d("CXC", "---clock package [0] :" + clockPackageInfos.get(0).packageName);     try {       Intent startSysClockIntent = getPackageManager().getLaunchIntentForPackage(clockPackageInfos.get(0).packageName);       startActivity(startSysClockIntent);     } catch (Exception e) {       Toast.makeText(getApplicationContext(), "--啟動系統鬧鐘失敗2--", Toast.LENGTH_SHORT).show();     }     }  } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汝城县| 隆尧县| 县级市| 康保县| 金坛市| 滕州市| 临夏县| 堆龙德庆县| 习水县| 辽阳市| 梧州市| 襄城县| 新野县| 屯门区| 襄垣县| 江油市| 武鸣县| 正宁县| 左权县| 建宁县| 闽侯县| 离岛区| 长子县| 桃园县| 通渭县| 丹阳市| 清涧县| 本溪市| 三江| 洛阳市| 南宁市| 南丰县| 泰来县| 南昌市| 股票| 固镇县| 汉源县| 荆门市| 汝城县| 边坝县| 长春市|