[Çözüldü] Android Studio "Startactivity" Hatası
-
Sorun anlamsızca çözüldü aynı koda sahip iki yazılımdan biri çalışmıyor.
Buyurun bu şekilde:
Sağdaki çalışıyor soldaki çalışmıyor.
Orj konu:
Merhaba.Android studio üzerinden programlamaya yeni başladım (1-2 hafta) kaynak olarak youtubeda bir kanalı ve kodlab yayınının A.S. ile programlama kitabını kullanıyorum.
Takip ettiğim kanalda intent konusuna gelindi ve sonrasında "startActivity(intent)" kodunu yazarak devam etti Manifestden kullanıcı izni aldı bende aynıları yaptım. Sonrasında uygulamayı çalıştırdı takır takır çalıştı. Ben de çalışmadı. Numara yazılıp butona tıkladığı zaman arama uygulaması açılıp aramayı gerçekleştirmesi gerekiyor fakat olmuyo .
startActivity kodunda hata gösterdi alt+enter yapınca "Add permission check" dedi başta izin almamı istedi sandım manifestten izni silip tekrar kontrol ederek yazdım fakat bir sıkıntı yok izinde daha sonra programın kendisinin eklemesine izin verdim ve MainActivity.java'ya "startActivity (intent)"in üstüne şunlar eklendi:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}Fakat burda bir sıkıntı var "this" kodunda hata gösteriyor neden gösteriyor hiç bir fikrim yok hatanın nedeni yazmıyor. Ne yapmam gerekiyor?
Yazılım şu şekilde:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="emironder.telefonaramasi.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_width="120dp"
android:layout_height="60dp"
android:id="@+id/imageView"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="76dp"
android:src="@android:drawable/ic_menu_call"
android:background="#1aff00" />
</RelativeLayout>MainActivity.java
package emironder.telefonaramasi;
import android.content.Intent;
import android.media.Image;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText et= (EditText) findViewById(R.id.editText);
ImageView call= (ImageView) findViewById(R.id.imageView);
call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("Tel:"+et.getText().toString()));
startActivity(intent);
}
});
}
}AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="emironder.telefonaramasi">
<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" />
</intent-filter>
</activity>
</application>
</manifest>
HalfGlaze tarafından 17/Oca/16 03:51 tarihinde düzenlenmiştir -
mobildeyim pek bakamadım ama gördüğüm kadarıyla o hata veren this i ve yanındaki virgülü sil.
ayrıca denemeyi gerçek telefonda yapmak gerekir
-
Nexus 5 de denedim emulatörle aynı sonucu veriyor.
This i ve yanındaki virgülü silince dizi hepten hata veriyor.
-
parametreye baktım da context istiyor hocam
this yerine sırasıyla getapplicationcontext() ve getbasecontext() dener misin
-
"Error:(31, 56) error: cannot find symbol method getapplicationcontext()" ikisinde de aynı hatayı alıyorum.
Bu startActivity'i aynı mantıkta başka bir yerde kullanmaya çalıştığımda aynı hatayı almıştım.
HalfGlaze tarafından 15/Oca/16 22:55 tarihinde düzenlenmiştir -
hocam bunlar case sensetive :) zahmet edip google a yazıp örneklere bakarsan nasıl yazıldığını görürsün. büyük küçük harf önemlidir yazılımda. mobildeyim dedim o yüzden çok fazla şey bekleme :)
kolay gelsin
-
Dikkatsiz bi şekilde kopyala yapıştır yapmıştım teşekkür ederim sorun halloldu.
-
Hocam bi sıkıntı daha var farklı başlık açmayım dedim.
Ben o startActivity de ki hatayı giderdiğim zaman nedense buton işlevini gerçekleştirmiyor.
https://www.dropbox.com/s/jjwulzq86o1g0rd/telefon%20aramas%C4%B1.apk?dl=0
Uygulama burda nerde hata yaptım bulamıyorum :/
-
Uri.parse("Tel:".....) Buradaki "Tel:" + kısmını sil. Sadece Edittext'den alacağın veri olmalı.
-
Hepsi tamam bu sefer de uygulama kapanıyor butona basınca... Şaka gibi ya :D 2 satırlık programda olan şeye bak
logcat de fatal exception şu şekilde başlıyorandroid.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=65 }
Edit: Az önce telefonumda test etmeyi denedim telefonda butona tıkladığında hiç bir şey olmuyor. Emulatörde butona tıkladığı zaman kapanıyor.
mainactivity.java'nın son hali:Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText num = (EditText) findViewById(R.id.editText);
ImageButton call = (ImageButton) findViewById(R.id.imageButton);
call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(num.getText().toString()));
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
startActivity(intent);
}
});
}
HalfGlaze tarafından 17/Oca/16 02:47 tarihinde düzenlenmiştir -
"tel:" + Kısmı olması gerekiyormuş hocam şimdi baktım internetten. Sadece numarayı yazmak yeterlidir diye hatırlıyordum yanlış hatırlıyormuşum.
