Android 如何在App中启动系统闹钟
生活随笔
收集整理的這篇文章主要介紹了
Android 如何在App中启动系统闹钟
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
由于不同Android手機(jī)廠商提供的系統(tǒng)鬧鐘包名都不一致,所以只能通過(guò)過(guò)濾當(dāng)前手機(jī)所有的應(yīng)用,以確定鬧鐘應(yīng)用的包名,進(jìn)而啟動(dòng)它。
這里采用的過(guò)濾規(guī)則是:系統(tǒng)應(yīng)用 && 應(yīng)用的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"><Buttonandroid:id="@+id/start_system_clock_bt"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="啟動(dòng)系統(tǒng)鬧鐘" /></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;//系統(tǒng)安裝所有軟件private List<PackageInfo> clockPackageInfos;//系統(tǒng)時(shí)鐘軟件private static final int HANDLE_MESSAGE_KEY = 1001;private Handler myHandler = new Handler() {@Overridepublic 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;}}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();initData();//begin scan installed applications;TODO: 16/1/15new Thread(new ScanInstalledAppsRunnable()).start();}private void initViews() {startSystemClockButton = (Button) findViewById(R.id.start_system_clock_bt);startSystemClockButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {TODO: 16/1/15startSystemClock();}});}private void initData() {clockPackageInfos = new ArrayList<PackageInfo>();}class ScanInstalledAppsRunnable implements Runnable {@Overridepublic void run() {allPackageInfos = getPackageManager().getInstalledPackages(0);if (allPackageInfos == null || allPackageInfos.size() == 0) {TODO: 16/1/15 todo nothingreturn;}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(), "--啟動(dòng)系統(tǒng)鬧鐘失敗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(), "--啟動(dòng)系統(tǒng)鬧鐘失敗2--", Toast.LENGTH_SHORT).show();}}}
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Android 如何在App中启动系统闹钟的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android 将混淆后的堆栈信息恢复
- 下一篇: android sina oauth2.