即使应用程序被杀,我希望我的broadcastreceiver收听短信传入消息。 为了让我的BroadCastreeiver保持活力,我使用后台服务提供了我的应用程序,但使用了大量电池。 所以,我尝试了IntentService,但它似乎是广播接收者在同一时间活动中遇难。
表现:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.alpacah.persistentapp"> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:persistent="true" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="com.alpacah.persistentapp.Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.alpacah.persistentapp.Handler"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </receiver> <service android:name="com.alpacah.persistentapp.ProtectIntentService"></service> </application> </manifest>广播接收器:
package com.alpacah.persistentapp; import android.app.IntentService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class Handler extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Ok", Toast.LENGTH_LONG); context.startService(new Intent(context, ProtectIntentService.class)); Log.e("BROADCASTRECEIVER", "Activated"); } }服务:
package com.alpacah.persistentapp; import android.app.Service; import android.app.IntentService; import android.content.Intent; import android.util.Log; public class ProtectIntentService extends IntentService { public ProtectIntentService() { super("ProtectIntentService"); } @Override public void onHandleIntent(Intent intent) { Log.e("handle", "intent"); } }I want my broadcastreceiver listenning for SMS incoming messages even when the app is killed. I maked my app using a background service for keeping alive my BroadCastreeiver but that use a lot of battery. So, I tried with IntentService but it seem the broadcastreceiver is killed in the same time of activity.
manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.alpacah.persistentapp"> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:persistent="true" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="com.alpacah.persistentapp.Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.alpacah.persistentapp.Handler"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </receiver> <service android:name="com.alpacah.persistentapp.ProtectIntentService"></service> </application> </manifest>BroadCastReceiver:
package com.alpacah.persistentapp; import android.app.IntentService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class Handler extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Ok", Toast.LENGTH_LONG); context.startService(new Intent(context, ProtectIntentService.class)); Log.e("BROADCASTRECEIVER", "Activated"); } }Service:
package com.alpacah.persistentapp; import android.app.Service; import android.app.IntentService; import android.content.Intent; import android.util.Log; public class ProtectIntentService extends IntentService { public ProtectIntentService() { super("ProtectIntentService"); } @Override public void onHandleIntent(Intent intent) { Log.e("handle", "intent"); } }最满意答案
问题解决了; 在我的情况下,我使用的是华硕Zenphone2,而且这个预装的应用程序名为Asus Mobile Manager,它阻止了自动启动程序。 我刚刚对我的应用程序进行了自动更新,现在完美地工作。 转到华硕移动经理 - >自动化 - >自动启动管理器 - >允许您的应用程序
Problem solved; in my case I was using a Asus Zenphone2 and this one has a preinstalled app named Asus Mobile Manager that was blocking autostart programs. I just autorizd my application and now, that works perfectly. Go to Asus Mobile Manager -> Autorizations -> Auto Start Manager -> allow your app
更多推荐
发布评论