-1

Как запустить приложение, когда звонок приходит на мой мобильный телефон. Приемник широковещательной передачи не будет работать, поскольку мое приложение не запускалось раньше, и у меня не было разрешения на проверку android.permission.READ_PHONE_STATE в android 6.0 (Marshmallow).Как начать приложение с помощью широковещательного приемника в android 6, у которого нет разрешения

У меня нет занятия по деятельности. Я просто хотел создать txt-файл при поступлении вызова.

Я просто хочу знать, как мы можем получить разрешение на вещательный приемник, когда приложение еще не запущено. когда звонок поступает, трансляция не будет работать, поскольку у нас нет разрешения.

Вот мой код:

Android Manifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.ranveer.teaser"> 

    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <receiver 
      android:name=".IncommingCallReceiver" 
      android:enabled="true" 
      android:exported="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

IncommingCallReceiver.java

package com.example.ranveer.teaser; 

    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.telephony.TelephonyManager; 
    import java.io.*; 
    import android.widget.Toast; 
    public class IncommingCallReceiver extends BroadcastReceiver 
    { 
     public IncommingCallReceiver() 
     { 
     } 
     Context mContext; 

     @Override 
     public void onReceive(Context mContext, Intent intent) 
     { 
      try{ 
      File file = new File("Hello1.txt"); 
      file.createNewFile(); 
       FileWriter writer = new FileWriter(file); 

     // Writes the content to the file 
     writer.write("This\n is\n an\n example\n"); 
     writer.flush(); 
     writer.close(); 
      Toast.makeText(mContext,"Done writing in file", 
        Toast.LENGTH_SHORT).show(); 
     } catch (Exception e) { 
      Toast.makeText(mContext, e.getMessage(), 
        Toast.LENGTH_SHORT).show(); 
     } 

      try 
      { 

       String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 



       if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
       { 
        Toast.makeText(mContext, "Phone Is Ringing", Toast.LENGTH_LONG).show(); 
        // Your Code 
       } 

       if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) 
       { 
        Toast.makeText(mContext, "Call Recieved", Toast.LENGTH_LONG).show(); 
        // Your Code 
       } 

       if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) 
       { 

        Toast.makeText(mContext, "Phone Is Idle", Toast.LENGTH_LONG).show(); 
        // Your Code 

       } 
      } 
      catch(Exception e) 
      { 
       //your custom message 
      } 

     } 
    } 
+0

Вам нужна «Деятельность». Вот как это. –

ответ

0

Если ваше приложение не является системное приложение, вы должны иметь по крайней мере, один Activity, и пользователю необходимо явно (вручную) запустить приложение в le аст один раз. В противном случае ваше приложение останется в «остановленном состоянии», и ваш BroadcastReceiver не получит никаких вызовов до onReceive(). Это произошло с Android 3.0.

Смежные вопросы