ActivityNotFoundException в Google Plus

Мое приложение Хотите поделиться имиджем в Google Plus И я прочитал о Google Plus И API показывает, что мы можем публиковать медиафайлы с помощью PlusShare.Builder. И я также Искал в stackoverflow, но не получаю никакого правильного ответа. И я пробовал с этим кодом:

case R.id.Share:
         if (mPlusClient.isConnected()) {
         Intent shareIntent = new PlusShare.Builder(this,mPlusClient)
         .setType("image/*")
         .setText("Risk Score")
         .addStream(Uri.fromFile(new File(Path)))
         .getIntent();
         startActivityForResult(shareIntent, REQ_START_SHARE);
         }

        break;

И

  case R.id.Share:

Intent shareIntent = ShareCompat.IntentBuilder.from(PlusActivity.this)
   .setText("This site has lots of great information about Android! http://www.android.com")
.setType("image/*").addStream(Uri.fromFile(new File(Path)))
.getIntent().setPackage("com.google.android.apps.plus");             
 startActivityForResult(shareIntent, REQ_START_SHARE);
        break;

и

 case R.id.Share:

         Intent shareIntent = new PlusShare.Builder(this,mPlusClient)
         .setType("image/*")
         .setText("Risk Score")
         .addStream(Uri.fromFile(new File(Path)))
         .getIntent();
         startActivityForResult(shareIntent, REQ_START_SHARE);

        break;

И каждый раз, когда я получаю ту же проблему.

12-05 12:19:57.316: E/AndroidRuntime(4688): FATAL EXCEPTION: main
12-05 12:19:57.316: E/AndroidRuntime(4688): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND typ=image/* flg=0x80000 pkg=com.google.android.apps.plus (has extras) }
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1518)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1390)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.app.Activity.startActivityForResult(Activity.java:3204)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at com.winit.android.riskfactor.PlusActivity.onClick(PlusActivity.java:133)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.view.View.performClick(View.java:3517)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.view.View$PerformClick.run(View.java:14155)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.os.Handler.handleCallback(Handler.java:605)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.os.Looper.loop(Looper.java:154)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at android.app.ActivityThread.main(ActivityThread.java:4624)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at java.lang.reflect.Method.invokeNative(Native Method)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at java.lang.reflect.Method.invoke(Method.java:511)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
12-05 12:19:57.316: E/AndroidRuntime(4688):     at dalvik.system.NativeStart.main(Native Method)

И я прочитал этот Вопрос Также

sending-json-data-to-google-plus

android-google-plush-intregation-in-my-android-app-gives-android-content-activit

sending-json-data-to-google-plus

failing-to-share-on-google-with-android

no-activity-found-to-handle-intent-causes-fc

Ответ 1

Google+ не имеет независимого API для записи, доступного для общих разработчиков. Единственный способ опубликовать в Google+ через приложение - это открыть приложение Google+ (желательно с использованием намерения, возвращенного PlusShare.Builder). Так что если Google плюс нет то он выдаст ActivityNotFoundException.

Ответ 2

Попробуйте эту ссылку и следуйте пошаговой процедуре. Я следовал тому же и работал на меня. Другое дело - очистить свой проект или перезапустить Eclipse IDE или Установить приложение Google+ (apk) на вашем устройстве или эмуляторе.
Вы также можете посмотреть мой ответ, разместив здесь шаг за шагом. Процедура установки приложения Google+ на эмуляторе.
Надеюсь, он решит вашу проблему...

Отредактировано:
Попробуйте этот код на вашем btn_share

Intent shareIntent = ShareCompat.IntentBuilder.from(ExampleActivity.this)
          .setType("image/*")
          .setText("Welcome to the Google+ platform. https://developers.google.com/+")
          .getIntent()
          .setPackage("com.google.android.apps.plus");//this line is important you should set your package like in this code.

      startActivity(shareIntent);

Ответ 3

Google+ требуется Google+, установленная на устройстве. Добавлен этот код для исключения исключений.

try {
    startActivityForResult(builder.getIntent(), 0);
} catch (ActivityNotFoundException e) {
    Toast.makeText(YourActivity.this, "You haven't installed google+ on your device", Toast.LENGTH_SHORT).show();
}

Ответ 4

Да, вы можете обмениваться изображениями в Google плюс с PlusBuilder. Добавьте Библиотека сервисов Google Play в качестве ссылки в вашем проекте. Этот метод вызывает класс com.google.android.gms.plus.PlusShare $Builder для совместного использования. Если Google plus отсутствует, он даст ActivityNotFoundException.

MainActivity.java

 import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.Intent;
 import android.content.IntentSender.SendIntentException;
 import android.net.Uri;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;

 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
 import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
 import com.google.android.gms.plus.PlusClient;
 import com.google.android.gms.plus.PlusOneButton;
 import com.google.android.gms.plus.PlusShare;

 public class MainActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener{




private static final int PLUS_ONE_REQUEST_CODE = 0;
private static final int REQ_SELECT_PHOTO = 1;
private static final int REQ_START_SHARE = 2;
private PlusClient mPlusClient;
Button share;
private static final int REQUEST_CODE_RESOLVE_ERR = 9000;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mPlusClient = new PlusClient.Builder(MainActivity.this, MainActivity.this, MainActivity.this)
    .build();


    share=(Button)findViewById(R.id.share);
    share.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent photoPicker = new Intent(Intent.ACTION_PICK);
            photoPicker.setType("image/*");
            startActivityForResult(photoPicker, REQ_SELECT_PHOTO);
        }
    });
}



@Override
public void onConnectionFailed(ConnectionResult result) {
    // TODO Auto-generated method stub
    if (result.hasResolution()) {
        try {
            result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
        } catch (SendIntentException e) {
            mPlusClient.connect();
        }

    }
}


@Override
public void onConnected(Bundle arg0) {
    // TODO Auto-generated method stub

}


@Override
public void onDisconnected() {
    // TODO Auto-generated method stub

}

@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
    if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
        mPlusClient.connect();
        return;
    }
    if(requestCode == REQ_SELECT_PHOTO) {
        if(responseCode == RESULT_OK) {
            Uri selectedImage = intent.getData();
            ContentResolver cr = this.getContentResolver();
            String mime = cr.getType(selectedImage);

            PlusShare.Builder share = new PlusShare.Builder(this);
            share.setText("hello everyone!");
            share.addStream(selectedImage);
            share.setType(mime);
            startActivityForResult(share.getIntent(), REQ_START_SHARE);
        }
    }
}

@Override
protected void onResume() {
    super.onResume();        
    //  mPlusOneStandardButtonWithAnnotation.initialize( URL, PLUS_ONE_REQUEST_CODE);
}

@Override
protected void onStart() {
    super.onStart();
    mPlusClient.connect();
}
@Override
protected void onStop() {
    super.onStop();
    mPlusClient.disconnect();

}
 }

share - кнопка, и камбуз будет открываться по щелчку.

Добавьте следующие строки кода в AndroidManifest.xml в теге приложения

   <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

и разрешение на Интернет:

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

Это рабочий пример совместного использования Google Plus.

Ответ 5

Просто выполните проверку, если доступны сервисы google

        int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if (errorCode != ConnectionResult.SUCCESS) {
            GooglePlayServicesUtil.getErrorDialog(errorCode, this, 0).show();
        } else {
            // Do somethings
        }

Вам нужно импортировать этот пакет:

import com.google.android.gms.common.GooglePlayServicesUtil;

ПРИМЕЧАНИЕ. Обычно на эмуляторе не установлены службы Google Play, кроме тех случаев, когда вы выбрали API Google вместо API Android для своего эмулируемого устройства, но в этом случае вы также должны проверить, включена ли учетная запись google доступны.

Ответ 6

Это как-то связано с .settype(). Я имел .setType("text/html") и испытывал эту ошибку. Но после того, как я изменил его на .setType( "text/plain" ), проблема была решена. Я не знаю, почему, но .settype() является причиной этой проблемы.

Ответ 7

для меня я забыл добавить setType("image/*") и теперь он отлично работает