내 앱에서 SMS, 이메일 및 전화를 차단해야합니다. incoming or outgoing calls or sms
을 (를) 감지하지 못했습니다. 간단히 말해, 백그라운드에서 실행되고 세 가지 프로세스 중 하나가 실행 중인지 확인하는 서비스가 있습니다. 그들이 실행중인 경우 사용자가 다이얼러 또는 SMS 앱을 클릭하면 내 활동이 열립니다. 내가 시도 것을 지금까지, 나는 아래에 게시하고있다 :Android : 특정 앱을 제한하는 방법
서비스 클래스
public class DialerService extends Service {
ActivityManager am;
List<RunningAppProcessInfo> mAppProcessInfosList;
private Runnable myRunnable;
boolean threadDone = true;
Handler mHandler;
boolean isLockedAppRunning = false;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
public void onCreate() {
am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
mAppProcessInfosList = new ArrayList<ActivityManager.RunningAppProcessInfo>();
mHandler = new Handler();
Log.v("Dialer Service", "onCreate called");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
myRunnable = new Runnable() {
@Override
public void run() {
isRestrictedAppRunning();
}
};
new Thread(new Runnable() {
public void run() {
while (threadDone) {
try {
mHandler.post(myRunnable);
} catch (Exception e) {
}
}
}
}).start();
return START_STICKY;
}
private void isRestrictedAppRunning() {
mAppProcessInfosList = am.getRunningAppProcesses();
for (int i = 0; i < mAppProcessInfosList.size(); i++) {
if (mAppProcessInfosList.get(i).processName
.equals("com.android.phone")
|| mAppProcessInfosList.get(i).processName
.equals("com.android.email")
|| mAppProcessInfosList.get(i).processName
.equals("com.android.mms")) {
isLockedAppRunning = true;
Intent dialogIntent = new Intent(getBaseContext(),
TestActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
this.threadDone = false;
}
}
이 코드는 작동하지만 문제 다음했습니다 반면,
그것은 블록의 모든 응용 프로그램을 내 요구 사항은 내가 차단 목록에 나열된 앱만 제한하는 것입니다. 예를 들어 휴대 전화 및 SMS를 차단하는 경우지도를 클릭 할 때가 아니라 다이얼러 및 SMS 앱 클릭만으로 내 활동을 열어야합니다.
나는 이것을하는 방법을 모르겠다.
개발자는 계약을 맺기 위해 스택 오버플로를 찾는 것이 가장 좋은 곳이 아닙니다. – mah
@ mah 그리고 나는 또한 내 일을 위해 계약서에 서명하고, 내가 직면 한 문제에 관해서 토론하고, 다른 사람들이 그들의 의견을 말할 수있게하고, 내가 놓친 곳을 지적하도록 도와 준다. – Nitish
http://stackoverflow.com/faq에서 Stack Overflow FAQ를 읽어보십시오. 토론 포럼이 아니므로 이해해주십시오. 분명히 당신은 여기 계약자를 고용하려하지 않겠지 만, 귀하의 질문은 여기에 게시하기에 충분히 깊게 (제 의견으로는 다른 사람들이 동의하지 않을 수도 있습니다). – mah