AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
Log.i("MyApp","Silent mode");
break;
case AudioManager.RINGER_MODE_VIBRATE:
Log.i("MyApp","Vibrate mode");
break;
case AudioManager.RINGER_MODE_NORMAL:
Log.i("MyApp","Normal mode");
break;
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码我可以获得振铃模式.我要做的就是听铃声模式改变并调用一个函数.
我被告知的是我可以注册AudioManager.RINGER_MODE_CHANGED_ACTION并在broadcastreceiver onReceive方法中监听更改意图.听起来很清楚.但我是android的新手,真的不知道如何写它.有没有人可以写一段代码,并显示它是如何工作,而不是说使用这个或那:)谢谢
我有一个跟随BroadcastReceiver,应该在启动完成后运行.我已经在我的小米设备(Redmi 1s)上进行了测试,它没有运行,而在像三星这样的其他设备上它按预期运行.
public class DeviceBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Toast.makeText(context, "I am Running", Toast.LENGTH_SHORT).show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已在Manifest中设置了权限.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Run Code Online (Sandbox Code Playgroud)
以下是我的广播接收器:
<receiver android:name=".receiver.DeviceBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-permissions android-reboot android-broadcastreceiver
我在Lenovo K50a40、OS 6.0 和其他一些设备的crashlytics中发现了以下崩溃日志。我无法从此日志中跟踪异常,也无法找到此异常来自我的应用程序的任何线索。我在社区中没有发现任何人之前遇到过类似的问题。如果您对此有所了解,请分享您的见解。
java.lang.IllegalStateException: View with id -1: android.support.design.widget.TabLayout$TabView#onMeasure() did not set the measured dimension by calling setMeasuredDimension()
at android.view.View.measure(View.java:19199)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1723)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1275)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:650)
at android.support.design.widget.TabLayout$SlidingTabStrip.onMeasure(TabLayout.java:1859)
at android.view.View.measure(View.java:19169)
at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1259)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:223)
at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:315)
at android.support.design.widget.TabLayout.onMeasure(TabLayout.java:1030)
at android.view.View.measure(View.java:19169)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1723)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:788)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:648)
at android.support.design.widget.AppBarLayout.onMeasure(AppBarLayout.java:234)
at android.view.View.measure(View.java:19169)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:719)
at android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:1008)
at android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:787)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:789)
at android.view.View.measure(View.java:19169)
at android.widget.RelativeLayout.measureChild(RelativeLayout.java:786)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:560)
at android.view.View.measure(View.java:19169)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:223)
at …Run Code Online (Sandbox Code Playgroud) android illegalstateexception android-view android-tablayout
在我的 Flutter 应用程序中,我在 Google Play Console 上收到了以下崩溃日志,这是一次本机崩溃。我无法完全理解它。这个 Flutter 应用程序也有 android java 代码。在崩溃日志中,它指向我的 android java 代码 com.xxxx.xxx,我已经在其中处理了异常和错误。
pid: 0, tid: 0 >>> com.xxxx.xxxx <<<
backtrace:
#00 pc 000000000005f356 /apex/com.android.runtime/lib/bionic/libc.so (abort+166)
#00 pc 0000000000021d38 /system/lib/libinput.so (abort_with_message(char const*)+24)
#00 pc 0000000000021d7c /system/lib/libinput.so (ubsan_handle_sub_overflow_minimal_abort+24)
#00 pc 0000000000012cb9 /system/lib/libinput.so (android::MotionEvent::getAxisValue(int, unsigned int) const+236)
#00 pc 0000000002202d19 /system/framework/arm/boot-framework.oat (art_jni_trampoline+128)
#00 pc 000000000204b00d /memfd:/jit-cache (com.xxxx.d.a.a.a+1484)
#00 pc 00000000000d7bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68)
#00 pc 000000000042e457 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+250)
#00 pc 00000000000dffb7 /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+174) …Run Code Online (Sandbox Code Playgroud) 我想用USSD对话,其自带拨号后任何USSD代码发言权* 123#这要求用户输入选项编号取决于SIM卡供应商,以执行特定的任务(一个或多个)。我需要与该对话框进行交互,以便以编程方式在该对话框中提供输入。
但是,在拨打任何USSD代码后,我可以使用读取警报对话框中出现的USSD响应,AccessibilityService并使用来显示响应,Toast如下面的代码所示。我还没有找到任何与USSD对话框进行交互的解决方案。
public class UssdService extends AccessibilityService{
public static String TAG = "USSD";
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d(TAG, "onAccessibilityEvent");
String text = event.getText().toString();
if (event.getClassName().equals("android.app.AlertDialog")) {
Log.d(TAG, text);
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
}
}
@Override
public void onInterrupt() {
}
@Override
protected void onServiceConnected() {
super.onServiceConnected();
Log.d(TAG, "onServiceConnected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.packageNames = new String[]{"com.android.phone"};
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; …Run Code Online (Sandbox Code Playgroud) android ussd sim-card android-alertdialog accessibilityservice
我有一个TimerTask对象timerTask。我的代码正在运行,但是当服务最初启动时,我的计时器任务会在指定时间(即下午 3:30)之前立即运行,但我希望它每天只在下午 3:30 运行一次。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.AM_PM, Calendar.PM);
cal.set(Calendar.HOUR, 3);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
Date date = cal.getTime();
timer.schedule(timerTask, date, 1000*60*60*24); // once per day
Run Code Online (Sandbox Code Playgroud) android ×6
abort ×1
android-ndk ×1
android-view ×1
flutter ×1
service ×1
sim-card ×1
timer ×1
timertask ×1
ussd ×1