마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

푸시를 받으면DB입력하게했는데 처음에는 되는데 두번째받으면 DB입력이 안되요;;

0 추천

안녕하세요 완전 초보 개발자입니다.

 

제가 만드려는것은 푸시를 받아서 푸시의 내용에 따라서 

1. CameraOff면 카메라차단 DB에 푸시메시지입력

2. CameraON이면 카메라차단 DB에 푸시메시지입력

3. 아무것도아닌 일반 푸시메시지 이면 그냥DB에 입력

 

이렇게 하려고하는데 처음에는 푸시받으면 DB입력은되는데 그상태로 두번째받으면 DB에 입력이 안되는데 어떻게하죠..

 

아! 그리고 제가 초보라 다 메인 액티비티에 구성했는데 이 기능들을 백그라운드 서비스로 돌리고싶은데 어떻게해야하죠... 검색해봣는데 값도안넘어가고그래서.......... 간단히 알려주시면 감사하겠습니다.

 


public class MainActivity extends AppCompatActivity {

    public Handler handler;      //DPM사용
    DevicePolicyManager mDPM;   //DPM사용
    ComponentName mReceiver;    //DPM사용
    boolean mAdminActive;       //DPM사용

    public static Context mContext;

    private static final String TAG = "Push!!!!";

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       /* if (android.os.Build.VERSION.SDK_INT > 9) { //oncreate 에서 바로 쓰레드돌릴려고 임시방편으로 넣어둔소스
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }*/

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String phone = getPhoneNumber();

        mContext = this;

        //푸시사용 Start
        FirebaseMessaging.getInstance().subscribeToTopic("news");
        FirebaseInstanceId.getInstance().getToken();
        //푸시사용 End

        //DPM권한 등록 Start
        mDPM = (DevicePolicyManager) getSystemService(this.DEVICE_POLICY_SERVICE);
        mReceiver = new ComponentName(this, Receiver.class);

        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mReceiver);
        startActivityForResult(intent, 1);
        mAdminActive = mDPM.isAdminActive(mReceiver);
        //DPM권한 등록 End


        if (!mAdminActive) {
            Toast.makeText(getApplicationContext(), "기기관리자 등록하세요", Toast.LENGTH_LONG).show();
            String msg2 = "기기관리자가 해제 되어 있습니다.";
            insertToDatabase(phone, msg2);
        }

        //Push 값 받아오기 Start
        String msg = "";


        Intent intentmsg = getIntent();
        msg = intentmsg.getStringExtra("msg");
        Log.i(TAG, "MainActivity Push 값 : " + msg);

        //Push 값 받아오기 End






        String cameraoff = "Camera Off"; //카메라 차단용 문구
        String cameraon = "Camera On"; // 카메라 Open용 문구

        if (msg == null) {


        } else if (!msg.equals(cameraoff) && !msg.equals(cameraon)) {
            Log.i(TAG, "받은 푸시메시지가 일반 메시지 : " + msg);

            insertToDatabase(phone, msg); // 받은푸시메시지가 null, Camera Off, Camera On 이 아니면 (그냥 푸시메시지일경우) DB삽입

        } else if (msg.equals(cameraoff)) { //푸시메시지가 'Camera Off'와 같을때에 1.기기관리자가 등록되어있을때와 2.기기관리자가 해제되어 있을때
            if (mAdminActive) {
                Log.i(TAG, "푸시메시지(카메라차단,기기관리자등록) : " + msg);
                mDPM.setCameraDisabled(mReceiver, true);
                Toast.makeText(getApplicationContext(), "카메라가 차단 됩니다.", Toast.LENGTH_LONG).show();

                insertToDatabase(phone, msg);

            } else if (!mAdminActive) {
                Log.i(TAG, "푸시메시지(카메라차단,기기관리자해제) : " + msg);
                String msg2 = "기기관리자가 해제 되어 있습니다.";
                insertToDatabase(phone, msg2);

            }

        } else if (msg.equals(cameraon)) { //푸시메시지가 'Camera On'와 같을때에 1.기기관리자가 등록되어있을때와 2.기기관리자가 해제되어 있을때
            if (mAdminActive) {
                Log.i(TAG, "푸시메시지(카메라Open,기기관리자등록) : " + msg);
                mDPM.setCameraDisabled(mReceiver, false);

                Toast.makeText(getApplicationContext(), "카메라를 사용할 수 있습니다.", Toast.LENGTH_LONG).show();
                insertToDatabase(phone, msg);


            } else if (!mAdminActive) {
                Log.i(TAG, "푸시메시지(카메라Open,기기관리자해제) : " + msg);
                String msg2 = "기기관리자가 해제 되어 있습니다.";
                insertToDatabase(phone, msg2);
                //Backhome();
            }

        }
    }
        // 푸시메시지 관련 끝

     //onCreate 끝

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case 1:
                if (resultCode == Activity.RESULT_OK) {
                    Log.i("DeviceAdmin Sample", "Administration enabled!");
                } else {
                    Log.i("DeviceAdmin Sample", "Administration enable Falied!");
                }
                return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    } //DeviceAdmin 등록 결과 리턴



    public String getPhoneNumber()
    {
        TelephonyManager telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        String phone = telManager.getLine1Number();
        if(phone.startsWith("+82")){
            phone = phone.replace("+82", "0");
        }
        return phone;
    }

    public void insertToDatabase(String phone, String msg) {

        class InsertData extends AsyncTask<String, Void, String> {
            ProgressDialog loading;


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(MainActivity.this, "Please Wait", null, true, true);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
            }


            @Override
            protected String doInBackground(String... params) {

                try {
                    String phone = (String) params[0];
                    String msg = (String) params[1];

                    String link = "http://192.168.0.9/insert/insertdbtest.php";
                    String data = URLEncoder.encode("phone", "UTF-8") + "=" + URLEncoder.encode(phone, "UTF-8");
                    data += "&" + URLEncoder.encode("msg", "UTF-8") + "=" + URLEncoder.encode(msg, "UTF-8");

                    URL url = new URL(link);
                    URLConnection conn = url.openConnection();

                    conn.setDoOutput(true);
                    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

                    wr.write(data);
                    wr.flush();

                    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

                    StringBuilder sb = new StringBuilder();
                    String line = null;

                    // Read Server Response
                    while ((line = reader.readLine()) != null) {
                        sb.append(line);
                        break;
                    }
                    return sb.toString();
                } catch (Exception e) {
                    return new String("Exception: " + e.getMessage());
                }

            }
        }

        InsertData task = new InsertData();
        task.execute(phone, msg);

    }


}

 

어렵네안드로이드 (590 포인트) 님이 2016년 12월 2일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...