2017-02-01 15 views
0

アプリを実行すると、アプリが致命的なエラーが発生しました コールでinstatを作成しますが、実行しません。(英語は申し訳ありません) ................................................ .......................android.content.ActivityNotFoundException:インテントを処理するアクティビティが見つかりません

私のマニフェスト:

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

     <uses-permission android:name="android.permission.CALL_PHONE" /> 
     <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.APP_CONTACTS" /> 
     </intent-filter> 
     </activity> 
     <activity android:name=".SecondActivity"></activity> 
     </application> 

     </manifest> 

私のコード:

public class SecondActivity extends AppCompatActivity { 

    private EditText editPhoneText; 
    private ImageButton imageCallButton; 
    private final int PHONE_CALL_CODE = 100; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 

    editPhoneText = (EditText) findViewById(R.id.editTextPhone); 
    imageCallButton = (ImageButton) findViewById(R.id.imageCallButton1); 

    imageCallButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      implicito(); 
     } 
    }); 
} 

    public void implicito(){ 

     Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("Tel: 9999999")); 
     startActivity(intent); 

} 
} 

答えて

2

あなたがお使いのデバイスがこれを行うことによって、あなたの意図を扱うことができるかどうかをチェックすることもできます。あなたがそうのような呼び出しを配置する場合よります

PackageManager packageManager = getPackageManager(); 
if (intent.resolveActivity(packageManager) != null) { 
    startActivity(intent); 
} else { 
    Log.d(TAG, "Cannot handle this intent"); 
} 

何を、あなたのマニフェストにパーミッションを宣言する必要はありません:

<uses-permission android:name="android.permission.CALL_PHONE" /> 

あなたのアプリ内で誰かに直接電話していないためです。あなたは実際にあなたの呼び出しの意思を扱うことができる他のアプリに "義務"を移しています。これは許可を必要としません。

あなたのアプリ内で直接電話をかけるには、あなたが宣言した許可が必要なIntent.ACTION_CALLになるはずです。

希望すると、これが役立ちます。

+0

lol、実行されていませんが、私はYouTubeでビデオを見て、私は私の実際のコードでエラーを修正しました。 – Dskato

1

Tel:スキームの場合、ACTION_DIALを処理するデバイス上のアクティビティはありません。試してみてください:

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:9999999")); 

Uriを組み立てるときに大文字と小文字が重要です。

私の改訂版Intentでも、ダイヤラがないAndroidタブレットなど、すべてのデバイスで機能するわけではありません。

関連する問題